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是我自定义的一个接口, 为了定义一些公共的方法