如果未在任何地方(在application.properties文件或其他属性源中)未设置必需的属性,Spring Boot Web应用程序是否有任何方法在启动时中止?现在,如果该属性包含在另一个属性中,则看来Spring Boot只是避免了替换。
例如,在我的application.properties文件中,有以下一行:
quartz.datasource.url=jdbc:hsqldb:${my.home}/database/my-jobstore
现在,如果未在其他位置设置“ my.home”,则Spring Boot会将字面值设置为 “ jdbc:hsqldb:$ {my.home} / database / my-jobstore” (无替代)。
如果属性my.home未在其他任何地方设置,我希望应用程序无法启动。
my.home
使用简单的带@Value(${my.home})注释字段创建一个bean 。-然后,Spring将尝试注入该值,并且将失败并因此在该值不存在时停止。
@Value(${my.home})
当然@Value(${my.home}) private String myHomeValue;,对于普通的(不是Boot的)Spring应用程序来说就足够了!但是我 不知道 Boot是否具有其他配置来处理丢失的值:如果存在其他故障管理,则可以在PostCreation方法中检查该值。
@Value(${my.home}) private String myHomeValue;
@Component public static class ConfigurationGuard implements InitializingBean { @Value(${my.home}) private String myHomeValue; /** * ONLY needed if there is some crude default handling for missing values!!!! * * So try it first without this method (and without implements InitializingBean) */ public void afterPropertiesSet() { if (this.myHomeValue == null or this.myHomeValue.equals("${my.home}") { throw new IllegalArgumentException("${my.home} must be configured"); } } }