Kotlin+Spring Cloud项目启动报configurationPropertiesBeans创建失败异常
问题排查与修复方案
核心问题根因
你遇到的启动错误是Spring全家桶版本多维度不统一导致的,具体问题点如下:
- Spring Boot插件版本与依赖版本不一致:插件配置的是
2.4.7,但gradle.properties中定义的springVersion是2.3.4.RELEASE,直接导致Spring核心依赖版本混乱 - Spring Cloud与Spring Boot版本不匹配:
2.2.9.RELEASE版本的spring-cloud-starter-openfeign属于Hoxton版Spring Cloud,仅兼容Spring Boot 2.2.x/2.3.x,和2.4.x版本Boot完全不兼容 - Kotlin插件版本不统一:
kotlin-jvm、kapt插件用的是1.4.10,kotlin-spring插件用的是1.5.20,跨大版本混用会引发注解解析异常 - JVM编译目标版本重复配置:前面配置
jvmTarget=11,后面又覆盖为1.8,编译版本混乱 - 依赖引入方式错误:
spring-boot-dependencies属于BOM依赖,不应该用implementation引入,应由依赖管理插件统一管控
修复步骤
1. 调整gradle.properties版本配置
统一所有组件版本为官方兼容组合:
springVersion=2.4.7 kotlinVersion=1.4.32 # Spring Boot 2.4.x官方适配的Kotlin版本 springCloudVersion=2020.0.3 # 对应Spring Boot 2.4.x的Spring Cloud官方版本 projectGroupId=com.mycomp projectVersion=0.0.1 jacocoVersion=0.8.7 artifactoryContextUrl=xxx
2. 重构build.gradle.kts配置
修正版本引用、依赖管理、重复配置问题:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("org.jetbrains.kotlin.jvm") version "${kotlinVersion}" id("org.jetbrains.kotlin.kapt") version "${kotlinVersion}" kotlin("plugin.spring") version "${kotlinVersion}" id("org.springframework.boot") version "${springVersion}" id("io.spring.dependency-management") version "1.0.11.RELEASE" // 适配Boot 2.4.x版本 } val kotlinVersion: String by project val springVersion: String by project val springCloudVersion: String by project val projectGroupId: String by project val projectVersion: String by project val jacocoVersion: String by project group = projectGroupId version = projectVersion repositories { mavenLocal() // 保留你原有仓库配置 mavenCentral() } // 统一管理Spring Boot、Spring Cloud依赖版本 dependencyManagement { imports { mavenBom("org.springframework.boot:spring-boot-dependencies:${springVersion}") mavenBom("org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}") } } dependencies { implementation(kotlin("stdlib-jdk8", kotlinVersion)) implementation(kotlin("reflect", kotlinVersion)) kapt(kotlin("stdlib", kotlinVersion)) implementation("br.com.mycomp:lib-log:3.2.0-74") implementation("org.springframework.boot:spring-boot-starter") implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-webflux") // 版本由Spring Cloud BOM统一管控,无需手动指定 implementation("org.springframework.cloud:spring-cloud-starter-openfeign") implementation("io.github.openfeign:feign-okhttp") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") } java { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } tasks.withType<KotlinCompile> { kotlinOptions { jvmTarget = "11" javaParameters = true } } springBoot { mainClass.set("com.examplo.demo.DemoApplication.kt") } sourceSets { main { java { srcDirs("build/generated/source/avro/main/java") } } } tasks.test { useJUnitPlatform() } configurations { all { exclude(group = "junit", module = "junit") exclude(group = "org.junit.vintage", module = "junit-vintage-engine") exclude(group = "org.slf4j", module = "slf4j-log4j12") } }
验证
修改完成后执行./gradlew clean build清空原有依赖缓存重新构建,再启动项目即可解决报错。
内容的提问来源于stack exchange,提问作者Jim C
相关产品推荐
相关产品推荐

