springboot+mongodb 一个连接 访问访问多个dataBase
    		       		warning:
    		            这篇文章距离上次修改已过425天,其中的内容可能已经有所变动。
    		        
        		                
                在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指定注入的实例。
评论已关闭