[英]How would I connect to two Mongo repositories with AbstractReactiveMongoConfiguration
My config for using a single mongo repo looks like this:我使用单个 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)));
}
}
how would I create another instance of a mongodb connection?我将如何创建 mongodb 连接的另一个实例? I have tried creating a second config class with the other connection String but it didn't work.我尝试使用另一个连接字符串创建第二个配置类,但没有用。 Thanks谢谢
You can do this using MongoTemplate
Instances.您可以使用MongoTemplate
实例来做到这MongoTemplate
。 You can specify multiple templates of mongoDB's.您可以指定 mongoDB 的多个模板。 You can get the whole idea here你可以在这里得到整个想法
Your application.properties be like:你的 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
your configuration class:你的配置类:
@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
)
}
}
You have to disable the authoconfig for mongo:您必须禁用 mongo 的 authoconfig:
@SpringBootApplication(exclude = [MongoAutoConfiguration::class,
MongoDataAutoConfiguration::class])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.