当前位置: 首页 > 知识库问答 >
问题:

如何在Spring启动应用程序中使用多个mongoDB数据库?[重复]

陆卓
2023-03-14

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

这是申请表。我的项目的属性文件,

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数据库。如何在应用程序中添加新数据库。属性文件。

共有1个答案

袁玮
2023-03-14

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

>

  • 定义您的主要和次要mongob属性,如下面application.properties,请用它们替换您的数据库详细信息:

    ######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=******
    

    现在添加多个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());
    }
    

    }

    现在为您的主secondary.please启用EnableMongoRepository,确保您在此处更改basPackages="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 {
       }
    

    现在,您可以创建您的文档、存储库、服务和控制器,您就可以开始了。下面是我的项目结构,你可以创建或有不同的。

    https://imgs.xnip.cn/cj/n/23/0fdf88ae-8f2a-4c60-b7d9-ce99700a165f.png" width="100%" height="100%" />

  •  类似资料:
    • null (该事件创建一个新的Webshop,并将其余额设置为100)。该事件将持久化到我的数据库中。当我查询当前webshop余额时,我可以返回当前余额为100。(事件和查询的代码如下所示) 但是,如果我重新启动应用程序,并试图再次查询当前余额,以前的事件不会被重播,因此我无法获得当前余额(重新启动后,事件仍然存在于数据库中,因此我认为这只是框架没有检索所有以前的事件的问题)。 我目前使用缺省配

    • 我在开发环境中使用嵌入式MongoDB数据库。它在应用程序启动时设置为空。我想在设置Spring上下文时加载应用程序所需的初始数据。 Spring Data MongoDB中是否有方法指向将加载到数据库中的JSON文件(类似于hibernate中的import.sql(hibernate.hbm2ddl.import_文件)或NoSql单元中的@UsingDataSet)?

    • 问题内容: 2 是否可以从2个不同的mongdb数据库服务器中检索数据? 问题答案: 更新资料 现在可以连接到远程/多个数据库: mongodb url 在哪里,例如(带有数据库名称) 目前,这样做有一个缺点:没有Oplog 旧答案 目前这是不可能的。每个流星应用程序都绑定到一个数据库。 有几种方法可以解决此问题,但其价值可能更复杂: 一种选择-使用单独的Meteor应用 在另一个流星应用程序中(

    • 我正在用spring boot开发一个应用程序。我使用Mysql数据库来实现持久性。我的数据库在远程服务器上。如何为远程数据库连接配置数据源? 请帮助我在属性文件和数据源bean配置中使用我的配置类中的注释来配置它。

    • 我想创建一个应用程序,我想有多个数据库,这意味着不止两个,至少三个。这可能吗?如果是,请在此处解释。

    • 我有这些档案,uat nyc,uat ldn。uat nyc数据源是oracle,uat ldn是mysql服务器。此配置在uat nyc应用程序中设置。yml和应用uat ldn。yml公司 我有以下配置类 如果我的应用程序是用spring运行的。配置文件。活动:uat nyc,uat ldn是否会创建两个数据源? 一个配置来自uat nyc,另一个配置来自uat ldn 我在下面有一个函数,在