Spring Boot 2.5.4集成2.2.9.RELEASE版Eureka Client启动失败寻求解决方案
问题解决方案
报错翻译
org.springframework.beans.factory.BeanCreationException: 名为'configurationPropertiesBeans'的Bean创建失败,该Bean定义来自类路径资源[org/springframework/cloud/autoconfigure/ConfigurationPropertiesRebinderAutoConfiguration.class]:合并Bean定义的后处理失败;嵌套异常为java.lang.IllegalStateException: 无法从类加载器[sun.misc.Launcher$AppClassLoader@659e0bfd]中解析类[org.springframework.cloud.context.properties.ConfigurationPropertiesBeans]
根本原因
报错是Spring Boot与Spring Cloud版本不匹配导致的,你当前使用的spring-cloud-starter-netflix-eureka-client 2.2.9.RELEASE属于Spring Cloud Hoxton版本系列,该系列最高只支持Spring Boot 2.3.x,和你使用的Spring Boot 2.5.4存在底层API兼容性差异,才会出现类加载、Bean创建失败的问题。
可行解决方案(无需降级Spring Boot版本)
方案1:升级Spring Cloud到匹配2.5.4的对应版本系列(推荐)
Spring Boot 2.5.x对应的Spring Cloud版本是2020.0.x(代号Ilford),按如下步骤修改配置即可:
- 移除
spring-cloud-starter-netflix-eureka-client依赖中硬编码的version标签 - 在pom.xml中添加Spring Cloud版本管理依赖,完整配置参考:
<!-- 添加Spring Cloud统一版本管理 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2020.0.3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- Eureka客户端依赖无需单独指定版本,由上方依赖管理统一控制 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
注意:2020.0.x版本默认关闭了Netflix部分旧组件的自动装配,如果启动后Eureka注册逻辑不生效,在启动类上补充添加@EnableEurekaClient注解即可
方案2:单独升级冲突依赖(临时兼容方案)
如果因为其他依赖限制不能调整整体Spring Cloud版本,可以单独排除eureka-client传递引入的低版本spring-cloud-context,替换为兼容Spring Boot 2.5.x的版本:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>2.2.9.RELEASE</version> <exclusions> <exclusion> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-context</artifactId> </exclusion> </exclusions> </dependency> <!-- 单独引入兼容Spring Boot 2.5.x的spring-cloud-context版本 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-context</artifactId> <version>3.0.3</version> </dependency>
该方案仅为临时兼容手段,可能存在其他隐藏兼容性问题,优先推荐使用方案1
内容的提问来源于stack exchange,提问作者hello world
相关产品推荐
相关产品推荐

