使用我的Spring Boot应用程序的application.properties文件可以在其中使用一些属性值。确保必须提供强制值的一种方法是为属性添加注释@Value
。问题在于,如果属性文件中没有该属性值,则应用程序将严重失败。
我正在寻求一种更好的方法,而不是整个堆栈跟踪,而是打印出有关“缺少属性A”的日志行。在仍然使用@Value
初始化属性的同时,有没有办法做到这一点?例如,属性A是必填项,在应用退出之前会记录错误;属性B缺失但不是必需属性,将记录警告并继续运行应用程序。
使用我的Spring Boot应用程序的application.properties文件可以在其中使用一些属性值。确保必须提供强制值的一种方法是为属性添加注释@Value
。问题在于,如果属性文件中没有该属性值,则应用程序将严重失败。
我正在寻求一种更好的方法,而不是整个堆栈跟踪,而是打印出有关“缺少属性A”的日志行。在仍然使用@Value
初始化属性的同时,有没有办法做到这一点?例如,属性A是必填项,在应用退出之前会记录错误;属性B缺失但不是必需属性,将记录警告并继续运行应用程序。
如果可以识别所有属性,则可以使用@Postconstruct在Application类中编写一个方法,并且可以在方法内部手动验证并记录它们
@Autowired
private Environment environment;
@PostConstruct
private void validateProperties() {
environment.getProperty(key);
.....
......
}
或者,您可以编写自定义的 EnvironmentPostProcessor ,并迭代所有属性并记录为空/空的任何一个。
,在使用spring-boot时,请考虑创建@ConfigurationProperties
类,而不要使用@Value
注释。
这样一来,您就可以使用Bean Validation进行验证,并且在同一类中,您可以实现接口InitializingBean
并添加其他验证/日志消息。
Follow this link,请参阅Spring的官方文档,以详细了解@ConfigurationProperties
。