Spring Boot 2.x升级至3.2.2后出现Bean Creation Exception问题求助
问题重现
将应用从Spring Boot 2.x升级至3.2.2后无法启动,调试日志循环打印以下错误:
DefaultListableBeanFactory.getSingletonFactoryBeanForTypeCheck:1011 - Bean creation exception on singleton FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.retry.annotation.RetryConfiguration': No bean named 'org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry' available 2024-03-25 23:47:30.937 DEBUG [main] mdc:{} DefaultListableBeanFactory.getSingleton:225 - Creating shared instance of singleton bean 'org.springframework.retry.annotation.RetryConfiguration'
解决步骤
强制适配Spring Retry版本:Spring Boot 3.x要求Spring Retry使用2.0.x及以上版本,在项目依赖文件中明确指定兼容版本,避免依赖传递引入旧版:
Maven示例:<dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> <version>2.0.6</version> <!-- 与Spring Boot 3.2.2适配 --> </dependency>Gradle示例:
implementation 'org.springframework.retry:spring-retry:2.0.6'排查并排除依赖冲突:执行依赖树命令查看是否有旧版spring-retry被引入:
Maven:mvn dependency:tree | grep spring-retry
Gradle:gradle dependencies | grep spring-retry
若发现1.x等旧版本,在对应依赖中排除:<dependency> <groupId>xxx</groupId> <artifactId>xxx</artifactId> <exclusions> <exclusion> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> </exclusion> </exclusions> </dependency>检查自定义配置冲突:若项目中有自定义的
RetryConfiguration类或扩展Spring Retry的配置类,删除或调整,避免与Spring Boot自动配置的org.springframework.retry.annotation.RetryConfiguration冲突;同时确认@EnableRetry注解仅在一个配置类上标注,不要重复使用。清理依赖缓存:删除本地Maven/Gradle缓存,重新下载依赖,避免缓存损坏导致的依赖异常:
- Maven:删除
~/.m2/repository中org/springframework/retry相关目录 - Gradle:执行
gradle clean build --refresh-dependencies
- Maven:删除
适配Spring Cloud版本(若使用):如果项目依赖Spring Cloud,需确保Spring Cloud版本与Spring Boot 3.2.2兼容(对应Spring Cloud 2023.0.0版本),避免版本不匹配引发的自动配置异常。
内容的提问来源于stack exchange,提问作者Hemant singh

