实现在Spring Boot中使用MongoDB切换数据库
时间: 2024-03-09 15:48:25 浏览: 33
在Spring Boot中使用MongoDB切换数据库,可以通过配置多个MongoDB连接信息和使用`MongoTemplate`的构造函数来实现。下面是具体的步骤:
1. 配置多个MongoDB连接信息
在`application.properties`文件中,配置多个MongoDB连接信息,例如:
```
# MongoDB1
spring.data.mongodb.uri=mongodb://localhost:27017/db1
spring.data.mongodb.database=db1
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=user1
spring.data.mongodb.password=password1
# MongoDB2
spring.data.mongodb2.uri=mongodb://localhost:27017/db2
spring.data.mongodb2.database=db2
spring.data.mongodb2.authentication-database=admin
spring.data.mongodb2.username=user2
spring.data.mongodb2.password=password2
```
2. 创建多个MongoTemplate
创建多个MongoTemplate,并在构造函数中指定要使用的数据库,例如:
```
@Configuration
public class MongoDbConfig {
@Autowired
private MongoProperties mongoProperties;
@Bean(name = "mongoDb1Template")
public MongoTemplate mongoDb1Template() {
MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(new MongoClientURI(mongoProperties.getUri() + "/db1"));
return new MongoTemplate(mongoDbFactory);
}
@Bean(name = "mongoDb2Template")
public MongoTemplate mongoDb2Template() {
MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(new MongoClientURI(mongoProperties.getUri() + "/db2"));
return new MongoTemplate(mongoDbFactory);
}
}
```
3. 在DAO层使用不同的MongoTemplate
在DAO层使用不同的MongoTemplate来操作不同的数据库,例如:
```
@Repository
public class UserRepository {
@Autowired
@Qualifier("mongoDb1Template")
private MongoTemplate mongoDb1Template;
@Autowired
@Qualifier("mongoDb2Template")
private MongoTemplate mongoDb2Template;
public void saveUser1(User user) {
mongoDb1Template.save(user);
}
public void saveUser2(User user) {
mongoDb2Template.save(user);
}
}
```
这样就可以在DAO层使用不同的MongoTemplate来操作不同的数据库了。