升级spring-boot-starter-parent至3.2.12后Spring代码异常求助
Spring Boot 3.2.12升级后MongoDB Repository初始化异常
问题背景
将spring-boot-starter-parent从3.1.12升级至3.2.12后,应用测试上下文加载失败,错误栈如下:
java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@6fba6a89 testClass = com.test.myapp.config.AppInitializerMongoDBTest, locations = [], classes = [com.test.myapp.core.services.ServicesConfig, com.test.myapp.core.repository.RepositoryConfig, com.test.myapp.config.PropertySources, com.test.myapp.jmx.JmxConfig, com.test.myapp.util.UtilConfig, com.test.myapp.core.async.AsyncConfig, com.test.myapp.core.identity.TenantIdentityConfig], contextInitializerClasses = [], activeProfiles = ["mongodbrepository"], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true", "spring.main.web-application-type=none"], contextCustomizers = [org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@5725a005, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@5afaf431, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@b107f13, org.springframework.boot.test.web.reactor.netty.DisableReactorResourceFactoryGlobalResourcesContextCustomizerFactory$DisableReactorResourceFactoryGlobalResourcesContextCustomizerCustomizer@16e7b37c, org.springframework.boot.test.autoconfigure.OnFailureConditionReportContextCustomizerFactory$OnFailureConditionReportContextCustomizer@48ee57ad, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, torg.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@25615ffd, org.spockframework.spring.mock.SpockContextCustomizer@0, org.springframework.boot.test.context.SpringBootTestAnnotation@87a2127a], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'createApplicationService' defined in com.test.myapp.core.services.ServicesConfig: Unsatisfied dependency expressed through method 'createApplicationService' parameter 0: Invalid bean definition with name 'domainModelMongoRepository' defined in com.test.myapp.core.repository.mongodb.repository.domain.DomainModelMongoRepository defined in @EnableMongoRepositories declared on MongoMetadataConfig: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'domainModelMongoRepository' defined in com.test.myapp.core.repository.mongodb.repository.domain.DomainModelMongoRepository defined in @EnableMongoRepositories declared on MongoMetadataConfig: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String
项目pom.xml相关依赖配置:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.12</version> </parent> <dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>4.11.0</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-reactivestreams</artifactId> <version>4.11.0</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.4</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.2</version> </dependency> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.4</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>3.4.18</version> <exclusions> <exclusion> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> </exclusion> <exclusion> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> </exclusion> <exclusion> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-reactivestreams</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-commons</artifactId> <version>2.7.2</version> </dependency> <dependency> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> <version>2.12.2</version> </dependency> <dependency> <groupId>org.spockframework</groupId> <artifactId>spock-core</artifactId> <version>2.3-groovy-3.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.spockframework</groupId> <artifactId>spock-spring</artifactId> <version>2.3-groovy-3.0</version> <scope>test</scope> </dependency> </dependencies>
排查与修复思路
核心错误定位
错误信息Invalid value type for attribute 'factoryBeanObjectType': java.lang.String明确指向Spring处理Mongo Repository Bean定义时的类型不匹配问题,核心原因是依赖版本不兼容,尤其是Spring Data组件与Spring Boot版本的冲突。
具体修复步骤
- 移除Spring Data依赖的手动版本指定:Spring Boot Parent已内置兼容的Spring Data版本管理,手动指定的
spring-data-mongodb:3.4.18(对应Spring Boot 2.x)和spring-data-commons:2.7.2与Spring Boot 3.2.x完全不兼容。直接删除这两个依赖的<version>标签,让Parent自动协调版本。 - 清理MongoDB驱动的手动配置:Spring Boot Parent会管理MongoDB驱动的兼容版本,手动指定的
4.11.0可能与Spring Boot 3.2.x不匹配,同时移除spring-data-mongodb中的驱动排除配置,避免依赖缺失或冲突。 - 升级老旧依赖:
commons-beanutils:1.9.4版本过旧,可能与Spring 6.x(Spring Boot 3.x基于Spring 6)存在兼容性问题,建议升级至最新稳定版,或考虑替换为Spring自带的BeanUtils。 - 同步Spock版本:Spring Boot 3.2.x需要Spock搭配Groovy 4.0,当前使用的
2.3-groovy-3.0存在版本不兼容风险,升级为2.3-groovy-4.0。 - 清理依赖缓存:执行
mvn clean install清理本地仓库的旧依赖,确保所有依赖都是Spring Boot Parent管理的兼容版本。
内容的提问来源于stack exchange,提问作者Anish Sharma
相关产品推荐
相关产品推荐

