【问题标题】:Spring Data Mongodb - single configuration for standalone mongo and replicasetSpring Data Mongodb - 独立 mongo 和副本集的单一配置
【发布时间】:2026-02-23 02:10:01
【问题描述】:

我开始使用单个 mongo 实例作为我的数据库,在 spring xml 中配置:

<mongo:mongo host="localhost" port="27017" />

最近,我更改了我的配置,使用了一个 3 节点的副本集,配置为:

<mongo:mongo replica-set="${my.replica.set}" />

一切都很好。

我当前的问题是,对于我的开发环境,我想使用单个 localhost mongo 配置,而对于 int 和 prod 环境,我想使用副本集配置。我将通过属性文件处理不同的值。问题是关于 mongo 配置本身。

类似于下面示例的内容将是理想的...

<mongo:mongo uri="localhost:27017" />
<mongo:mongo uri="localhost:27017,localhost:27018" />

我遇到了这个例子:spring-boot uriCanBeCustomized unitTest

有没有办法在 spring 配置中做到这一点?

我正在使用 spring-data-mongodb-1.7.0.RELEASE。

【问题讨论】:

    标签: mongodb replication spring-data-mongodb replicaset


    【解决方案1】:

    即使您将副本集配置指向独立的 mongod,它看起来也可以正常工作。我认为这行不通,因为它专门设置了“副本集”,但测试表明确实如此。

    所以在我的例子中,配置看起来就像

    <mongo:mongo replica-set="${mongodbs}" /> 
    

    我在开发属性文件中的位置

    mongodbs=localhost:27017 
    

    对于 int/prod 属性

    mongodbs=host1:port1,host2:port2,host3:port3
    

    【讨论】: