为了账号安全,请及时绑定邮箱和手机立即绑定

@ConfigurationProperties 构造函数绑定在 2.2.0.RC1 中不起作用

@ConfigurationProperties 构造函数绑定在 2.2.0.RC1 中不起作用

米琪卡哇伊 2023-09-27 17:33:09
我正在尝试新的 Spring Boot 2.2.0.RC1 版本,特别是第 2.8.2 节中描述的新配置属性构造函数绑定功能。构造函数绑定。我建立了一个非常小的项目,其中有一个类,如下所示:@Configuration@ConfigurationProperties("acme")public class AppConfig {    private final String stuff;    public AppConfig(String stuff) {        this.stuff = stuff;    }    public String getStuff() {        return stuff;    }}和这样的 application.yml :server:  port: 9000acme:  stuff: hello there我的主要方法在这个类中:@SpringBootApplicationpublic class AcmeApplication {    public static void main(String[] args) {        new SpringApplicationBuilder(AcmeApplication.class)                .logStartupInfo(true)                .bannerMode(Banner.Mode.CONSOLE)                .web(WebApplicationType.SERVLET)                .run();    }}运行应用程序的结果是这样的输出:***************************APPLICATION FAILED TO START***************************Description:Parameter 0 of constructor in com.acme.config.AppConfig required a bean of type 'java.lang.String' that could not be found.Action:Consider defining a bean of type 'java.lang.String' in your configuration.有趣的是,如果我更改 AppConfig 类中的代码以使用属性绑定,通过删除构造函数、从“stuff”字段中删除“final”修饰符并添加 setStuff(String) 方法,应用程序将正常启动(setStuff 方法)按预期被调用)。在尝试让构造函数绑定工作时我缺少什么?我尝试删除 @Configuration 注释,添加 @EnableConfigurationProperties 注释,添加 @ConfigurationPropertiesScan 等等,但从阅读文档来看,这些东西似乎都不适用于此。在我看来,它试图注入 Spring bean,而不是构建和注入配置属性对象。这就是为什么我认为删除 @Configuration 注释可能会有所帮助,但没有什么区别。顺便说一句,我希望这个 AppConfig 是一个 Spring Bean,这样我就可以将它注入到 Service 类中。
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

我错误地查看了里程碑文档。更新的 RC1 文档显示我需要使用 @ImmutableConfigurationProperties 注释以及 @ConfigurationPropertiesScan 注释。


查看完整回答
反对 回复 2023-09-27
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

进行了简短的研究。这似乎是原因https://github.com/spring-projects/spring-boot/issues/16928#issuecomment-494717209 请查看整个线程以获取更多上下文。这是前面提到的问题描述https://github.com/spring-projects/spring-boot/issues/8762#issuecomment-494310988


查看完整回答
反对 回复 2023-09-27
  • 1 回答
  • 0 关注
  • 52 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信