springboot操作多个Mongodb数据库,如何配置?
时间: 2024-05-06 10:19:40 浏览: 100
在 Spring Boot 中操作多个 MongoDB 数据库,可以通过配置多个 MongoTemplate 实例来实现。
1. 添加 MongoDB 的依赖
在 Maven 或 Gradle 的配置文件中添加 MongoDB 的依赖,例如:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
```
2. 配置多个 MongoTemplate 实例
在 application.properties 或 application.yml 配置文件中,添加多个 MongoDB 的连接信息,例如:
```
spring.data.mongodb.uri=mongodb://localhost:27017/test1
my.mongodb.uri=mongodb://localhost:27017/test2
```
然后,在 Spring Boot 的配置类中配置多个 MongoTemplate 实例,例如:
```
@Configuration
public class MongoConfig {
@Bean(name = "primaryMongoTemplate")
@Primary
public MongoTemplate primaryMongoTemplate(MongoDbFactory mongoDbFactory) {
return new MongoTemplate(mongoDbFactory);
}
@Bean(name = "secondaryMongoTemplate")
public MongoTemplate secondaryMongoTemplate(@Qualifier("secondaryMongoDbFactory") MongoDbFactory mongoDbFactory) {
return new MongoTemplate(mongoDbFactory);
}
@Bean(name = "secondaryMongoDbFactory")
public MongoDbFactory secondaryMongoDbFactory() {
MongoClientURI uri = new MongoClientURI(env.getProperty("my.mongodb.uri"));
return new SimpleMongoClientDbFactory(uri);
}
}
```
在上面的示例中,我们配置了两个 MongoTemplate 实例,一个是 primaryMongoTemplate,连接的是默认的 MongoDB 数据库,另一个是 secondaryMongoTemplate,连接的是名为 test2 的 MongoDB 数据库。
3. 使用多个 MongoTemplate 实例
在需要使用 MongoDB 的地方,通过 @Qualifier 注解指定要使用的 MongoTemplate 实例,例如:
```
@Service
public class UserService {
@Autowired
@Qualifier("primaryMongoTemplate")
private MongoTemplate primaryMongoTemplate;
@Autowired
@Qualifier("secondaryMongoTemplate")
private MongoTemplate secondaryMongoTemplate;
public void saveUser(User user) {
primaryMongoTemplate.save(user, "user");
secondaryMongoTemplate.save(user, "user");
}
}
```
在上面的示例中,我们在 UserService 类中注入了两个 MongoTemplate 实例,分别是 primaryMongoTemplate 和 secondaryMongoTemplate,然后在 saveUser 方法中分别使用了这两个实例来保存 User 对象到对应的 MongoDB 数据库中。
阅读全文