Spring Boot 3.4.1迁移遇setFilterChains多Bean冲突,配置-parameters仍报错
Spring Boot 3.4.1迁移时Bean冲突问题解决思路
你遇到的是Spring Security注入ObjectPostProcessor时的Bean冲突,核心原因是参数名信息未被正确保留,导致Spring无法精准识别依赖类型。以下是针对性解决思路:
修正Kotlin编译器参数配置
你当前配置的是JavaCompile任务的参数,但Kotlin项目需要配置Kotlin编译任务的参数。在build.gradle.kts中替换原有配置为:tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { kotlinOptions { freeCompilerArgs += "-java-parameters" } }该参数会让Kotlin编译器生成包含参数名信息的字节码,作用等同于Java的
-parameters。同步IDE编译器配置
以IntelliJ IDEA为例,打开设置:- 进入
Build, Execution, Deployment > Compiler > Kotlin Compiler,在Additional command line parameters中添加-java-parameters - 进入
Build, Execution, Deployment > Compiler > Java Compiler,确保Additional command line parameters包含-parameters
- 进入
清理构建缓存并重新编译
执行命令清理旧编译产物与缓存,避免残留的无参数名信息的class文件干扰:./gradlew clean build兜底方案:指定@Primary Bean(仅应急使用)
若上述步骤仍未解决,可暂时通过标记优先级最高的Bean规避冲突,但不推荐长期使用,建议优先解决参数名问题:@Configuration class ObjectPostProcessorConfig { @Primary @Bean fun primaryObjectPostProcessor(): ObjectPostProcessor<Any> { return DefaultObjectPostProcessor() } }
内容的提问来源于stack exchange,提问作者Jerome Dupont
相关产品推荐
相关产品推荐

