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" } }