springboot 整合mongodb切换数据库
时间: 2023-07-02 13:10:16 浏览: 212
在 Spring Boot 中,我们可以使用 `MongoTemplate` 来操作 MongoDB 数据库。如果需要切换数据库,可以通过配置多个 `MongoClient`,然后再使用不同的 `MongoTemplate` 来操作不同的数据库。
下面是一个示例,演示如何在 Spring Boot 中切换 MongoDB 数据库:
首先,需要在 `application.properties` 配置文件中添加多个 MongoDB 连接信息:
```
# 第一个 MongoDB 连接
spring.data.mongodb.uri=mongodb://localhost:27017/db1
# 第二个 MongoDB 连接
mongodb2.uri=mongodb://localhost:27017/db2
mongodb2.database=db2
```
然后,在代码中可以通过 `MongoClientFactoryBean` 创建多个 `MongoClient`:
```java
@Configuration
public class MongoConfig {
@Bean
public MongoClientFactoryBean mongo() {
MongoClientFactoryBean mongo = new MongoClientFactoryBean();
mongo.setHost("localhost");
return mongo;
}
@Bean
public MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(mongo(), "db1");
}
@Bean(name = "mongo2")
public MongoTemplate mongoTemplate2() throws Exception {
MongoClientURI uri = new MongoClientURI("mongodb://localhost:27017/db2");
MongoTemplate mongoTemplate = new MongoTemplate(new MongoClient(uri), "db2");
return mongoTemplate;
}
}
```
上面的示例中,`mongoTemplate()` 方法创建了一个 `MongoTemplate` 对象来操作名为 `db1` 的数据库,而 `mongoTemplate2()` 方法则创建了一个 `MongoTemplate` 对象来操作名为 `db2` 的数据库。
在需要使用的地方,可以通过 `@Qualifier` 注解注入不同的 `MongoTemplate`:
```java
@Service
public class MyService {
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
@Qualifier("mongo2")
private MongoTemplate mongoTemplate2;
// ...
}
```
这样就可以在代码中切换不同的 MongoDB 数据库了。
阅读全文