public class Person { @Id private String id; private String firstname; private String lastname; private Address address; // … getters and setters omitted }
MongoTemplate(repository的底層)使用的默認序列化機制須要名字id的屬性,做爲文檔的id(_id),如今支持使用的id屬性類型是String、ObjectId和BigInteger。spring
public interface PersonRepository extends PagingAndSortingRepository<Person, Long> { // additional custom finder methods go here }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mongo="http://www.springframework.org/schema/data/mongo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd"> <mongo:mongo id="mongo" /> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg ref="mongo" /> <constructor-arg value="databaseName" /> </bean> <mongo:repositories base-package="com.acme.*.repositories" /> </beans>
mongo:repositories元素的base-package指定掃描包,Spring在這個包中尋找繼承了MongoRepository的接口,併爲它們建立實體。默認狀況下,mongo:repositories注入名字爲mongoTemplate的MongoTemplate實體,若是不使用默認約定能夠指定mongo-template-ref屬性。mongodb
能夠使用@EnableMongoRepositories註解,它與xml命名空間元素的屬性十分類似。若是沒有指定base package屬性,它將默認掃描與使用@EnableMongoRepositories註解相同的包。app
@Configuration @EnableMongoRepositories class ApplicationConfig extends AbstractMongoConfiguration { @Override protected String getDatabaseName() { return "e-store"; } @Override public Mongo mongo() throws Exception { return new Mongo(); } @Override protected String getMappingBasePackage() { return "com.oreilly.springdata.mongodb" } }