Spring Boot启动失败:ConfigurableListableBeanFactory方法缺失问题
Spring Boot启动失败:方法不存在的版本兼容问题
错误信息
APPLICATION FAILED TO START
描述:
尝试调用一个不存在的方法,调用发起位置如下:org.springframework.boot.actuate.autoconfigure.startup.StartupEndpointAutoConfiguration$ApplicationStartupCondition.getMatchOutcome(StartupEndpointAutoConfiguration.java:63)不存在的方法为:
org.springframework.beans.factory.config.ConfigurableListableBeanFactory.getApplicationStartup()Lorg/springframework/core/metrics/ApplicationStartup;该方法所属类org.springframework.beans.factory.config.ConfigurableListableBeanFactory的来源位置为:
jar:file:/Users/doc/.m2/repository/org/springframework/spring-beans/5.2.5.RELEASE/spring-beans-5.2.5.RELEASE.jar!/org/springframework/beans/factory/config/ConfigurableListableBeanFactory.class
类加载位置为:file:/Users/doc/.m2/repository/org/springframework/spring-beans/5.2.5.RELEASE/spring-beans-5.2.5.RELEASE.jar建议操作:
修正应用的类路径,使其包含单一兼容版本的org.springframework.beans.factory.config.ConfigurableListableBeanFactory
问题根源分析
你的POM配置存在多处版本不兼容问题:
- Actuator版本冲突:父依赖是Spring Boot 2.2.6.RELEASE,但手动指定
spring-boot-actuator-autoconfigure为2.4.0版本。高版本Actuator会调用Spring 5.3+才有的getApplicationStartup()方法,而Spring Boot 2.2.x对应的Spring版本是5.2.x,因此出现方法不存在的错误。 - Spring Cloud组件版本不匹配:
- Spring Boot 2.2.6.RELEASE对应Spring Cloud版本为Hoxton.SR6,但你手动指定了
spring-cloud-starter-openfeign(2.0.1.RELEASE)、spring-cloud-starter-netflix-ribbon(2.1.0.RELEASE),这些版本与Hoxton不兼容。 spring-cloud-vault-config(3.1.1)和spring-vault-core(2.3.2)版本过高,Spring Boot 2.2.x对应的Spring Cloud Vault版本应为2.2.x系列。
- Spring Boot 2.2.6.RELEASE对应Spring Cloud版本为Hoxton.SR6,但你手动指定了
- 手动指定过多不必要版本:多数依赖应通过Spring Boot或Spring Cloud的依赖管理自动控制版本,避免手动指定导致冲突。
修复后的POM配置
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> </parent> <properties> <java.version>1.8</java.version> <!-- Spring Cloud版本,与Spring Boot 2.2.6匹配的Hoxton.SR6 --> <spring-cloud.version>Hoxton.SR6</spring-cloud.version> <!-- Swagger版本保持不变 --> <springfox-swagger2.version>2.4.0</springfox-swagger2.version> </properties> <dependencyManagement> <dependencies> <!-- Spring Cloud依赖管理,自动控制所有Spring Cloud组件版本 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Swagger依赖管理 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>${springfox-swagger2.version}</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>${springfox-swagger2.version}</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-staticdocs</artifactId> <version>${springfox-swagger2.version}</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- Spring Cloud Vault,由Spring Cloud依赖管理控制版本 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-vault-config</artifactId> </dependency> <!-- Spring Boot核心依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- 移除手动指定版本的spring-boot-actuator-autoconfigure,由starter自动引入兼容版本 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.25</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- Spring Retry由Spring Boot或Cloud依赖管理控制 --> <dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> </dependency> <!-- Spring Cloud OpenFeign,由Spring Cloud依赖管理控制版本 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <!-- Spring Cloud Ribbon,由Spring Cloud依赖管理控制版本 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency> </dependencies>
关键修复点
- 移除所有手动指定的Spring Cloud组件版本(如vault、feign、ribbon),通过
spring-cloud-dependencies自动引入与Spring Boot 2.2.6兼容的版本。 - 删除手动指定版本的
spring-boot-actuator-autoconfigure,它会通过spring-boot-starter-actuator自动引入匹配版本。 - 移除不必要的
spring-vault-core依赖,spring-cloud-vault-config会自动引入所需核心依赖。 - 保留Swagger版本配置,因其不属于Spring Boot/Cloud依赖管理体系。
内容的提问来源于stack exchange,提问作者user19373833
相关产品推荐
相关产品推荐

