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

升级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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 00:53:10