gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:19:32 28 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Spring Boot Multiple Datasource

(9 个回答)


3年前关闭。




在我的应用程序中,我需要使用两个 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 文件中添加新数据库。

最佳答案

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

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

    }
  • 现在启用 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 {
    }

    现在你可以创建你的文档、存储库、服务、 Controller ,你很高兴。下面是我的项目结构,你可以创建或拥有不同的。

    Project Structure

    关于java - 如何在 Spring Boot 应用程序中使用多个 mongodb 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52398308/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com