java - 当 Spring 属性无效时提供更好的日志记录

标签 java spring spring-boot spring-properties

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

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

最佳答案

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

@Autowired
    private Environment environment;

    @PostConstruct
    private void validateProperties() {

        environment.getProperty(key);
        .....
        ......
    }
<小时/>

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

关于java - 当 Spring 属性无效时提供更好的日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58723526/

相关文章:

spring - 如何在 Spring Security 6 中自定义 expressionHandler 和 accessDecisionManager

java - 如何使用在命令行上启动的 Spring Boot 自动重定向到 https

java - Spring Boot 中是否有一个全局标志来禁用所有计划作业?

java - 当用户在 webview 中点击进入站点时,用户留在应用程序中

java正则表达式接受除无之外的任何单词

java - 主程序在读取启动另一个永远运行的进程的进程的输出流时挂起

java - 在 Spring Batch 步骤中引用命令行参数

java - Gson - 尝试将 json 字符串转换为自定义对象

java - 使用 hibernate 查询 : colon gets treated as parameter/escaping colon

java - 如何使用 springdoc-openapi-webflux-ui 显示应用程序 API 文档?