You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级mongo-java-driver至3.9.1后MongoTemplate适配问题求助

改写方案:适配Spring Data MongoDB 3.2.0的MongoClient创建逻辑

以下是针对你的代码的完整改写版本,完全适配Spring Data MongoDB 3.2.0和mongo-java-driver 3.9.1的API要求:

import com.mongodb.ServerAddress;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.MongoClientURI;
import org.springframework.data.mongodb.core.MongoTemplate;
import java.util.ArrayList;
import java.util.List;

public MongoTemplate sampleMethod() {
    MongoClient client = null;

    if (...) {
        List<ServerAddress> saList = new ArrayList<>();
        for (...) {
            saList.add(...);
        }
        // 基于ServerAddress列表构建MongoClient
        com.mongodb.MongoClientSettings settings = com.mongodb.MongoClientSettings.builder()
                .applyToClusterSettings(builder -> builder.hosts(saList))
                .build();
        client = MongoClients.create(settings);
    } else if (...) {
        MongoClientURI mongoClientURI = new MongoClientURI("mongodb://...");
        // 从MongoClientURI提取连接字符串创建客户端
        client = MongoClients.create(mongoClientURI.getURI());
    } else {
        String connectionStr = "mongodb://..." + this.encryptedProperties.getProperty("mongo.username") + "....";
        // 直接用拼接好的连接字符串创建客户端
        client = MongoClients.create(connectionStr);
    }

    return new MongoTemplate(client, srcDbname);
}

关键修改说明

  • 包路径替换:将旧的com.mongodb.MongoClient替换为com.mongodb.client.MongoClient,这是Spring Data MongoDB 2.1+版本强制要求的参数类型。
  • 客户端创建方式切换:使用官方推荐的MongoClients工厂类替代直接new MongoClient()的实例化方式,这是MongoDB Java Driver 3.x后的标准用法。

分场景适配细节

  1. 基于ServerAddress列表的创建
    旧API直接传入地址列表的逻辑,需要通过MongoClientSettings构建器配置集群参数,调用applyToClusterSettings传入地址列表后,再生成客户端实例。

  2. 基于MongoClientURI的创建
    新API的MongoClients.create()支持直接接收字符串类型的连接地址,因此可以直接提取MongoClientURI中的原始连接字符串来创建客户端;如果不需要保留MongoClientURI对象,甚至可以直接拼接字符串后传入,简化代码逻辑。

版本兼容性验证

你的mongo-java-driver 3.9.1完全支持上述新API,MongoClientSettings、MongoClients等核心类在该版本中已稳定存在,无需额外依赖调整。

内容的提问来源于stack exchange,提问作者waffledood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:20:31