0

使用 application.properties 文件,我的 Spring Boot 应用程序可以在其中使用一些属性值。确保必须存在强制值的一种方法是@Value为属性添加注释。这样做的问题是,如果属性文件中没有属性值,则应用程序会严重失败。

我正在寻求一种更好的不那么可怕的方式来打印关于“缺少属性 A”的日志行,而不是整个堆栈跟踪。有没有办法在仍然使用@Value初始化属性的同时做到这一点?例如,属性 A 是强制性的,在应用程序退出之前记录错误;缺少属性 B 但不是强制性的,会记录警告并继续应用。

4

2 回答 2

2

如果您可以识别所有属性,那么您可以使用 @Postconstruct 在 Application 类中编写一个方法,并且在您的方法中,您可以手动验证并记录它们

@Autowired
    private Environment environment;

    @PostConstruct
    private void validateProperties() {

        environment.getProperty(key);
        .....
        ......
    }

或者,您可以编写自定义EnvironmentPostProcessor,并迭代所有属性并记录为空/空的任何一个。

于 2019-11-06T05:47:21.787 回答
0

当您使用 spring-boot 时,请考虑创建一个@ConfigurationProperties类而不是使用@Value注释。

通过这样做,您可以使用Bean Validation进行验证,同样在同一个类中,您可以实现接口InitializingBean并添加额外的验证/日志消息。

按照 Spring 官方文档上的这个链接阅读更多关于@ConfigurationProperties.

于 2019-11-06T07:25:52.240 回答