如果在使用ConfigurationProperties时没有设置属性,Spring不会抱怨

k2arahey  于 2023-03-12  发布在  Spring
关注(0)|答案(1)|浏览(242)

我有一个通过ConfigurationProperties配置的bean:

@Component
@ConfigurationProperties(prefix = "mybean")
public class MyBean {

    @NotEmpty
    private String name;

    // Getters, setters, ...
}

我通过application.yml配置字段值,但在“两个级别”中。在默认的应用程序.yml中,我只是将值 * 设置为另一个属性 * 的值:

myBean.name: ${theValueOf.myBean.name}

在配置文件特定的YML文件中,我有:

theValueOf.myBean.name: 'The desired value'

我的预期是,如果我忘记指定属性theValueOf.myBean.name,那么应用程序在启动时会失败,并显示占位符“theValueOf.myBean.name”无法解析的消息,而字段name被赋值为(字面上)${theValueOf.myBean.name}
如果我用@Value("${myBean.name}")注解name字段(并且不使用ConfigurationProperties),并且忘记定义属性theValueOf.myBean.name,那么应用程序在启动时会失败--正如预期的那样。

我的问题是:在使用ConfigurationProperties时,如何使Spring在启动时失败并显示消息“无法解析占位符...”?

czq61nw1

czq61nw11#

只需在@ConfigurationProperties中使用JSR 303注解标记属性即可。

@Component
@ConfigurationProperties(prefix = "mybean")
public class MyBean {

   @NotEmpty
   private String name;
}

相关问题