如果未在任何地方设置所需属性(无论是在 application.properties 文件还是其他属性源中),Spring Boot Web 应用程序是否有任何方法可以在启动时中止?现在,如果该属性包含在另一个属性中,Spring Boot 似乎只是避免了替换。
例如,在我的 application.properties 文件中,我有以下行:
quartz.datasource.url=jdbc:hsqldb:${my.home}/database/my-jobstore
现在,如果“my.home”未在其他地方设置,Spring Boot 会将 url 按字面意思设置为“jdbc:hsqldb:${my.home}/database/my-jobstore” (无替代)。
如果未在其他地方设置属性 my.home
,我希望应用程序无法启动。
最佳答案
要抛出友好的异常,只需在属性中放置默认的 null 值,然后在 afterProperty 方法中检查并抛出异常。
@Component
public static class ConfigurationGuard implements InitializingBean {
@Value("${my.home:#{null}}")
private String myHomeValue;
public void afterPropertiesSet() {
if (this.myHomeValue == null or this.myHomeValue.equals("${my.home}") {
throw new IllegalArgumentException("${my.home} must be configured");
}
}
}
关于Spring Boot - 如果未设置属性,则检测并终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31528697/