springboot中使用mongodb第一步需要在pom.xml中配置mongodb依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
接着在application.properties中添加连接相关参数
spring.data.mongodb.host = 127.0.0.1 spring.data.mongodb.port = 27017 spring.data.mongodb.database = test
这些参数会被用于自动创建与mongodb的连接
紧接着,为了自动创建与mongodb的连接需要配置bean,这里我使用如下方式,当然也可以使用xml配置的方式
1 @Configuration 2 public class AppConfig { 3 @Value("${spring.data.mongodb.host}") 4 private String mongoHost; 5 6 @Value("${spring.data.mongodb.database}") 7 private String mongoDatabase; 8 9 @Value("${spring.data.mongodb.port}") 10 private int mongoPort; 11 12 @Bean 13 public MongoClient mongoClient() throws Exception { 14 return new MongoClient(this.mongoHost, this.mongoPort); 15 } 16 17 @Bean(name="mongoTemplate") 18 public MongoTemplate mongoTemplate() throws Exception { 19 MongoTemplate mongoTemplate = new MongoTemplate(mongoClient(), this.mongoDatabase); 20 return mongoTemplate; 21 } 22 }
这样做主要是因为, MongoClient和MongoTemplate并不受由spring容器管理, 也就无法自动注入到dao中(为了自定义dao各种接口的实现,需要用到MongoTemplate)
1 @Repository 2 public class JobInfoRepositoryImpl implements BaseRepository { 3 4 @Resource 5 private MongoTemplate mongoTemplate; 6 7 private final String collectionName = "jobinfos"; 8 9 public List<JobInfo> findAll() { 10 return mongoTemplate.findAll(JobInfo.class, this.collectionName); 11 } 12 13 public long count(String query) { 14 return this.mongoTemplate.count(new BasicQuery(query), this.collectionName); 15 } 16 }
上面代码中的BaseRepository是我自定义的一个接口, 为了定义一些公共的方法