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

为使用noCursorTimeout迁移spring-data-mongodb至1.10.0部署失败

解决Spring Data Mongo 1.9.5→1.10.0升级后的BeanCreationException问题

你在升级Spring Data Mongo版本以使用Query.noCursorTimeout()时遇到的Bean创建依赖问题,我帮你拆解下可能的原因和解决步骤:

核心问题定位

错误提示明确指向MongoPropertiesConfiguration无法解析对mongoTemplateReplicaSet的引用,这通常和升级后配置不兼容、依赖缺失或者Bean定义错误有关。

分步解决方案

1. 检查mongoTemplateReplicaSet的Bean定义适配性

Spring Data Mongo 1.10.x版本开始全面切换到MongoDB Java Driver 3.x的MongoClient(替代了旧版的Mongo类),如果你的旧配置里mongoTemplateReplicaSet还是依赖Mongo实例,就会出现问题。

修正配置示例(XML):

<!-- 替换旧的Mongo bean为MongoClient -->
<bean id="mongoClient" class="com.mongodb.MongoClient">
    <constructor-arg value="你的MongoDB地址"/>
    <!-- 如果是副本集,这里可以传入多个地址的列表 -->
</bean>

<!-- 更新mongoTemplateReplicaSet的依赖为mongoClient -->
<bean id="mongoTemplateReplicaSet" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongoClient"/>
    <constructor-arg value="你的数据库名称"/>
</bean>

2. 验证MongoPropertiesConfiguration的构造参数引用

确保properties-context.xml中MongoPropertiesConfiguration的构造参数引用的bean id和mongoTemplateReplicaSet完全一致,没有拼写错误:

<bean id="com.example.util.properties.MongoPropertiesConfiguration#7dc57a65" 
      class="com.example.util.properties.MongoPropertiesConfiguration">
    <constructor-arg ref="mongoTemplateReplicaSet"/> <!-- 这里的ref必须和目标bean的id完全匹配 -->
</bean>

3. 确认MongoDB驱动版本兼容性

Spring Data Mongo 1.10.0对应的MongoDB Java Driver版本是3.2.x,如果你的项目里驱动版本过低,会导致API不兼容,进而引发Bean创建失败。

Maven依赖示例(确保版本匹配):

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>1.10.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.2.2</version>
</dependency>

4. 确认noCursorTimeout()的使用方式

虽然当前错误是Bean问题,但提前确认API使用正确性也很重要,1.10.0中该方法的正确用法是:

Query query = new Query(Criteria.where("yourField").is("yourValue"));
query.noCursorTimeout(); // 启用无游标超时
List<YourEntity> results = mongoTemplateReplicaSet.find(query, YourEntity.class);

总结

优先从Bean配置的兼容性入手,替换旧的Mongo为MongoClient,确保依赖引用正确,再验证驱动版本匹配,这几个点是升级Spring Data Mongo时最容易踩的坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:03:59