You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 2.5.4版本@ConstructorBinding注解不生效问题求解

问题原因

  • 报错的核心是注解使用冲突:你在需要@ConstructorBinding构造绑定的配置属性类上额外添加了@Configuration注解。
    • @Configuration会将类标记为普通Spring配置类,Spring会按照常规Bean的实例化逻辑处理,尝试从容器中查找构造函数所需的String类型Bean完成注入,你的容器中没有对应类型的Bean,就抛出了该报错。
    • @ConstructorBinding的生效依赖Spring Boot的配置属性绑定逻辑,添加@Configuration后,普通Bean实例化逻辑优先级更高,覆盖了配置属性绑定的逻辑,导致构造绑定失效。

解决方案

两种修改方式任选其一即可:

方式一:移除@Configuration注解(推荐,适配不可变配置类场景)

你主启动类已经添加了@ConfigurationPropertiesScan,会自动扫描所有带@ConfigurationProperties的类,结合@ConstructorBinding完成不可变类的配置属性绑定,不需要额外加@Configuration。修改后的Config类代码如下:

@ConfigurationProperties("test")
public class Config {
    public final String foo;
    
    @ConstructorBinding
    public Config(String foo) {
        this.foo = foo;
    }
}

方式二:保留@Configuration的同时主动注册配置类

如果业务需要必须保留@Configuration注解,可以在主启动类添加@EnableConfigurationProperties指定需要绑定的配置类,主动触发配置绑定逻辑,优先级高于普通Bean实例化:

@SpringBootApplication
@EnableConfigurationProperties(Config.class)
public class Application implements CommandLineRunner {
    // 原有代码无需修改
}

内容的提问来源于stack exchange,提问作者OhleC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 12:09:03