如何在Spring Boot应用程序中使用多个mongodb数据库?

时间:2018-09-19 04:52:50

标签: java mongodb spring-boot configuration application.properties

在我的应用程序中,我需要使用两个MongoDB数据库。我不知道如何在spring应用程序的application.properties文件中添加2个MongoDB数据库。

这是我项目的application.properties文件,

spring.data.mongodb.database=DB1
spring.data.mongodb.authentication-database=DB1
spring.data.mongodb.host=dev-ng-mongo1.domain.com
spring.data.mongodb.password=9876512
spring.data.mongodb.port=27017 
spring.data.mongodb.username=pavan

但是我想为同一项目使用另一个MongoDB数据库。如何在application.properties文件中添加新数据库。

1 个答案:

答案 0 :(得分:2)

请按照以下步骤设置多个mongodb数据源。

  1. 在application.properties中定义您的主要和辅助mongodb属性,如下所示,请用它们替换您的数据库详细信息:

    ######Primary Mongo DB########################
    spring.data.mongodb.host=localhost
    spring.data.mongodb.database=primary
    spring.data.mongodb.port=27017
    spring.data.mongodb.password=*******
    spring.data.mongodb.username=*******
    
    ###########Secondary MongoDB#####################
    mongodb.host=localhost
    mongodb.port=27017
    mongodb.database=secondary
    mongodb.username=******
    mongodb.password=******
    
  2. 现在添加多个Mongo Db配置。

    @Configuration
    public class MultipleMongoConfig {
    
    @Primary
    @Bean(name = "primary")
    @ConfigurationProperties(prefix = "spring.data.mongodb")
    public MongoProperties getPrimary() {
        return new MongoProperties();
    }
    
    @Bean(name = "secondary")
    @ConfigurationProperties(prefix = "mongodb")
    public MongoProperties getSecondary() {
        return new MongoProperties();
    }
    
    @Primary
    @Bean(name = "primaryMongoTemplate")
    public MongoTemplate primaryMongoTemplate() throws Exception {
        return new MongoTemplate(primaryFactory(getPrimary()));
    }
    
    @Bean(name = "secondaryMongoTemplate")
    public MongoTemplate secondaryMongoTemplate() throws Exception {
        return new MongoTemplate(secondaryFactory(getSecondary()));
    }
    
    @Bean
    @Primary
    public MongoDbFactory primaryFactory(final MongoProperties mongo) throws Exception {
        return new SimpleMongoDbFactory(new MongoClient(mongo.getHost(), mongo.getPort()),
                mongo.getDatabase());
    }
    
    @Bean
    public MongoDbFactory secondaryFactory(final MongoProperties mongo) throws Exception {
        return new SimpleMongoDbFactory(new MongoClient(mongo.getHost(), mongo.getPort()),
                mongo.getDatabase());
    }
    

    }

  3. 现在为主要的辅助服务器启用EnableMongoRepositories。请确保在此处更改basePackages = "com.example.springbootmultipledatasource.primary.repository"的存储库软件包

    @Configuration
    @EnableMongoRepositories(basePackages = 
    "com.example.springbootmultipledatasource.primary.repository",
        mongoTemplateRef = "primaryMongoTemplate")
     public class PrimaryMongoConfig {
    
     }
    

二级Mongo模板:请确保您在basePackages = "com.example.springbootmultipledatasource.secondary.repository

处更改二级存储库软件包
    @Configuration
    @EnableMongoRepositories(basePackages = "com.example.springbootmultipledatasource.secondary.repository",
        mongoTemplateRef = "secondaryMongoTemplate")
   public class SecondaryMongoConfig {
   }

现在您可以创建文档,存储库,服务,控制器,并且一切顺利。下面是我可以创建或具有其他功能的项目结构。

Project Structure