如何配置spring-data-mongodb以通过属性使用副本集

我目前正在编写一个应该使用MongoDB副本的应用程序。 它是一个基于Spring Boot的应用程序,以下属性可以很好地连接到一台服务器:

spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=demo 

这对我的本地开发环境来说绝对没问题。 但是后来它应该针对MongoDB副本集运行,所以我必须提供至少2个,更好的3个副本集种子,但我怎么能用属性来做呢?

我在这个页面上看了一下: http : //docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html ,但是没有提到的副本集的显式属性。 提供以逗号分隔的地址列表,如下所示:

 spring.data.mongodb.host=127.0.0.1,127.0.1.1,127.0.2.1 spring.data.mongodb.uri=mongo://127.0.0.1,mongo://127.0.0.1:27018 

(我一个接一个地试过。)

这也不起作用(实际上,它会产生一个exception,让Spring使用默认配置)。

我也尝试使用以下config.xml,没有运气:

     

我知道上面的配置略有不同,但我目前正在尝试的是获得一个exception,它向我显示没有可访问的副本集节点。

任何想法,提示?

对此没有明确的支持,没有。 但你应该能够通过uri参数配置好。

我们最近实际更新了文档 。

我有一个类似的问题,我挖了MongoProperties :: createMongoClient()代码,发现如果为spring.data.mongodb.host,spring.data.mongodb.port配置了任何值,代码忽略了uri值, spring.data.mongodb.username或spring.data.mongodb.password。 如果我将所有信息放在uri中(并从属性文件中删除了所有其他spring.data.mongodb。*值),则连接代码可以正常工作。 uri属性设置最终看起来像这样:mongodb://用户名:mypasswd @ hostname1:27017,hostname2:27017,hostname3:27017 / dbname

格式化uri值的文档位于: https : //docs.mongodb.org/manual/reference/connection-string