首页 > 解决方案 > 最终字段的 ConfigurationProperties 不起作用

问题描述

我需要将application.yml文件中的数据设置到我的配置类,但是当我尝试这样做时,出现错误:

TestConfig is annotated with @ConstructorBinding but it is defined as a regular bean which caused dependency injection to fail.

我的application.yml文件如下所示:

test:
  app:
    id: app_id

我的TestConfig课看起来像这样:

@Configuration
@ConfigurationProperties(prefix = "test.app")
@ConstructorBinding
public class TestConfig {
    private final String id;

    public TestConfig(String id) {
        this.id = id;
    }
}

我正在尝试这样做,它对我不起作用。
我哪里错了?

标签: javaspringspring-boot

解决方案


根据 :

https://www.baeldung.com/configuration-properties-in-spring-boot#immutable-configurationproperties-binding

您需要从 TestConfig.class 中删除 @Configuration。

此外,需要强调的是,要使用构造函数绑定,我们需要使用@EnableConfigurationProperties 或@ConfigurationPropertiesScan 显式启用我们的配置类。

--------- 已编辑 -----

@ConfigurationProperties(prefix = "test.app")
@ConstructorBinding
public class TestConfig {

    private final int id;

    public TestConfig (int id)
        this.id = id
    }

    public String getId() {
        return id;
    }

 
}



@SpringBootApplication
@ConfigurationPropertiesScan
public class YourApp{

    public static void main(String[] args) {
        SpringApplication.run(YourApp.class, args);
    }
}

推荐阅读