0

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

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

    @NotEmpty
    private String name;

    // Getters, setters, ...
}

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

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

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

theValueOf.myBean.name: 'The desired value'

我的期望是,如果我忘记指定属性,theValueOf.myBean.name那么应用程序在启动时应该会失败,并显示无法解析占位符“theValueOf.myBean.name”的消息。相反,该字段name被分配了值(字面意思)${theValueOf.myBean.name}

如果我用(并且不使用 ConfigurationProperties)注释该name字段,并且忘记定义属性,那么应用程序在启动时会失败 - 正如预期的那样。@Value("${myBean.name}")theValueOf.myBean.name

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

4

1 回答 1

0

只需在 @ConfigurationProperties 中使用 JSR303 注释标记您的属性。

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

   @NotEmpty
   private String name;
}
于 2020-03-25T22:02:30.983 回答