在Spring Boot中,要配置MongoDB来访问多个数据库,你需要在你的配置文件中指定每个数据库的连接信息,并为每个数据库创建独立的MongoTemplate
实例。以下是一个简单的例子:
- 在
application.properties
或application.yml
中配置多个MongoDB数据库的连接信息。
spring:
data:
mongodb:
primary:
uri: mongodb://username:password@localhost:27017/database1
secondary:
uri: mongodb://username:password@localhost:27017/database2
- 创建配置类来配置两个
MongoTemplate
实例,每个实例对应一个数据库。
@Configuration
public class MongoConfig {
@Primary
@Bean(name = "primaryMongoTemplate")
public MongoTemplate primaryMongoTemplate(@Qualifier("primaryMongo") MongoDatabaseFactory primaryMongo) throws Exception {
return new MongoTemplate(primaryMongo);
}
@Bean(name = "secondaryMongoTemplate")
public MongoTemplate secondaryMongoTemplate(@Qualifier("secondaryMongo") MongoDatabaseFactory secondaryMongo) throws Exception {
return new MongoTemplate(secondaryMongo);
}
@Bean(name = "primaryMongo")
@Primary
public MongoDatabaseFactory primaryMongo() throws Exception {
return new SimpleMongoClientDatabaseFactory(new URI("mongodb://username:password@localhost:27017/database1"));
}
@Bean(name = "secondaryMongo")
public MongoDatabaseFactory secondaryMongo() throws Exception {
return new SimpleMongoClientDatabaseFactory(new URI("mongodb://username:password@localhost:27017/database2"));
}
}
在上面的代码中,primaryMongoTemplate
和secondaryMongoTemplate
是两个独立的MongoTemplate
实例,分别对应配置文件中指定的两个数据库。primary
和secondary
是两个数据库的别名,用于在配置文件中区分不同的数据库连接信息。
现在,你可以在你的服务中注入这些MongoTemplate
实例来访问对应的数据库。
@Service
public class MyService {
@Autowired
@Qualifier("primaryMongoTemplate")
private MongoTemplate primaryMongoTemplate;
@Autowired
@Qualifier("secondaryMongoTemplate")
private MongoTemplate secondaryMongoTemplate;
// 使用primaryMongoTemplate来操作database1
// 使用secondaryMongoTemplate来操作database2
}
通过这种方式,你可以同时访问多个MongoDB数据库。每个数据库需要一个独立的MongoTemplate
实例,并且在注入时要通过@Qualifier
指定注入的实例。