【问题标题】:How would I connect to two Mongo repositories with AbstractReactiveMongoConfiguration如何使用 AbstractReactiveMongoConfiguration 连接到两个 Mongo 存储库
【发布时间】:2021-12-14 03:11:00
【问题描述】:

我使用单个 mongo 存储库的配置如下所示:

@Configuration
@EnableMongoRepositories
public class ApplicationConfig extends AbstractReactiveMongoConfigutation {
     @Autowired
     private Environment env;

     @Value("${spring.data.mongodb.uri}")
     private String mongoUri;

     @Override
     protected String getDatabaseName(){
          return env.getProperty("spring.data.mongodb.database");
     }

     @Override
     protected void configureClientSettings(MongoClientSettings.Builder builder){
          builder.applyConnectionString(new ConnectionString(mongoUri)));
     }
}

如何创建另一个 mongodb 连接实例?我尝试使用另一个连接字符串创建第二个配置类,但它没有用。谢谢

【问题讨论】:

    标签: java spring mongodb spring-boot azure-cosmosdb


    【解决方案1】:

    您可以使用MongoTemplate 实例来完成此操作。您可以指定 mongoDB 的多个模板。 你可以得到整个想法here

    你的 application.properties 是这样的:

       #--- Primary MongoDB ---#
       spring.data.mongodb.uri=mongodb://admin:root@127.0.0.1:27017/primary
       #--- Secondary MongoDB ---#
       mongodb.uri=mongodb://admin:root@127.0.0.1:27017/secondary
    

    你的配置类:

    @Configuration
    class MultipleMongoConfig {
    @Primary
    @Bean(name = ["primaryMongoProperties"])
    @ConfigurationProperties(prefix = "spring.data.mongodb")
    fun getPrimary() : MongoProperties {
        return MongoProperties()
    }
    @Bean(name = ["secondaryMongoProperties"])
    @ConfigurationProperties(prefix = "MongoDB")
    fun getSecondary() : MongoProperties {
        return MongoProperties()
    }
    @Primary
    @Bean(name = ["primaryMongoTemplate"])
    fun primaryMongoTemplate() : MongoTemplate {
        return MongoTemplate(primaryMongoDatabaseFactory(getPrimary()))
    }
    @Bean(name = ["secondaryMongoTemplate"])
    fun secondaryMongoTemplate() : MongoTemplate {
        return MongoTemplate(secondaryMongoDatabaseFactory(getSecondary()))
    }
    @Primary
    @Bean
    fun primaryMongoDatabaseFactory(mongo : MongoProperties) : MongoDatabaseFactory {
        return SimpleMongoClientDatabaseFactory(
           mongo.uri
       )
    }
    @Bean
    fun secondaryMongoDatabaseFactory(mongo : MongoProperties) : MongoDatabaseFactory {
        return SimpleMongoClientDatabaseFactory(
           mongo.uri
       )
    }
    }
    

    您必须禁用 mongo 的 authoconfig:

        @SpringBootApplication(exclude = [MongoAutoConfiguration::class,
                               MongoDataAutoConfiguration::class])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-22
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      相关资源
      最近更新 更多