configurationproperties不起作用

92dk7w1h  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(556)

我需要从 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;
    }
}

我试着这样做,但对我没用。
我错在哪里?

pu82cl6c

pu82cl6c1#

根据:
https://www.baeldung.com/configuration-properties-in-spring-boot#immutable-配置属性绑定
您需要从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);
    }
}

相关问题