问题
启动springboot项目时报错如下:
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadata
问题分析
这个错误表明 Spring Boot 应用在启动时找不到 ConfigurationBeanFactoryMetadata 类。这个类是 Spring Boot 2.x 版本中的内部类,但在 Spring Boot 3.0 中被移除了。
主要原因:
- 版本不兼容:项目使用了 Spring Boot 3.x,但依赖库仍需要 Spring Boot 2.x 的类
- 依赖冲突:引入了不兼容的 Spring Cloud/Spring Cloud Alibaba 版本
- 过时依赖:使用了已废弃的 spring-cloud-starter-alibaba-nacos-config 等组件
问题解决
方案一:升级 Spring Cloud Alibaba 版本(推荐)
<!-- pom.xml 中更新依赖 -->
<properties>
<!-- 使用 Spring Boot 3.x 兼容版本 -->
<spring-boot.version>3.2.5</spring-boot.version>
<spring-cloud.version>2023.0.1</spring-cloud.version>
<spring-cloud-alibaba.version>2023.0.1.0</spring-cloud-alibaba.version>
</properties>
<dependencies>
<!-- 使用新版 nacos-config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<!-- 确保使用 Spring Boot 3.x starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring-boot.version}</version>
</dependency>
</dependencies>
成功启动!
方案二:降级 Spring Boot 版本(兼容旧系统)
<properties>
<!-- 降级到 Spring Boot 2.7.x -->
<spring-boot.version>2.7.18</spring-boot.version>
<spring-cloud.version>2021.0.8</spring-cloud.version>
<spring-cloud-alibaba.version>2021.0.8.0</spring-cloud-alibaba.version>
</properties>
方案三:排除冲突依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.9.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
</exclusion>
</exclusions>
</dependency>
版本兼容对照表
Spring Boot | Spring Cloud | Spring Cloud Alibaba | 是否支持 |
---|---|---|---|
3.2.x | 2023.0.x | 2023.0.x.0 | ✅ 推荐 |
3.1.x | 2022.0.x | 2022.0.x.0 | ✅ |
3.0.x | 2022.0.x | 2022.0.x.0 | ⚠️ 部分 |
2.7.x | 2021.0.x | 2021.0.x.0 | ✅ |
2.6.x | 2021.0.x | 2021.0.x.0 | ⚠️ 需验证 |
2.5.x | 2020.0.x | 2021.0.x.0 | ❌ 不兼容 |