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