【问题标题】:How can I tell whether my Spring boot application is in debug mode?如何判断我的 Spring Boot 应用程序是否处于调试模式?
【发布时间】:2017-11-21 15:07:01
【问题描述】:

我想根据--debug 开关是否存在来修改我的应用程序的工作方式。我在我的@Configuration 文件中试过这个:

@Value("\${debug}")
lateinit var debug: String

但是春天说

无法解析值“${debug}”中的占位符“调试”

如何查询--debug选项的状态?

【问题讨论】:

    标签: java spring spring-boot kotlin


    【解决方案1】:

    检查调试模式最可靠的方法是查询Environment。这将允许您检测是否已通过命令行参数 (--debug)、系统属性 (-Ddebug)、环境变量 (DEBUG=true) 等方式启用了该模式。

    您可以像注入任何其他依赖项一样注入Environment 的实例,也可以实现EnvironmentAware。然后可以使用getProperty(String) 方法检索debug 属性的值。如果debug 属性具有除false 以外的非空值,则Spring Boot 将debug 视为已启用:

    private boolean isSet(ConfigurableEnvironment environment, String property) {
        String value = environment.getProperty(property);
        return (value != null && !value.equals("false"));
    }
    

    【讨论】:

    • 我最终在 Spring 开始之前检查了命令行参数(在我调用 SpringApplication.run() 之前),但我猜这是一种更惯用的方式。
    【解决方案2】:

    这种方式恐怕无法获得调试模式。

    Spring 在此处查找任何属性值,但 --debug 不是属性的一部分。

    调试检测可能是特定于供应商的。 (有关调试检测的更多信息,请参阅Determine if a java application is in debug mode in Eclipse)。

    【讨论】:

      【解决方案3】:

      最简单的方法是将debug选项添加到系统属性中,例如:

      java -Ddebug Application
      

      然后您可以将属性注释如下:

      @Value("#{systemProperties.debug != null}")
      var debug: Boolean = false;
      //                    ^--- using a default value to avoiding NPException
      

      【讨论】:

      • 我认为这不会起作用,因为 --debug 选项是 Spring 处理的特殊标志。我不能以其他方式使用它。
      • @AdamArold 先生,感谢您的反馈。但--debug 选项仅适用于spring-boot 而不是spring
      • 这就是我用它标记我的问题的原因。
      • @AdamArold 先生,对不起,我没有看清楚标题。但您可以更改调试的其他名称,例如:dev。对于选项debug!,您需要将表达式更改为systemProperties['debug!'] != null
      【解决方案4】:

      正如之前在the reply by Andy 中提到的,可以评估属性debug,但是您需要从Environment 执行此操作。

      当我想激活一个组件时,我遇到了同样的问题,只是在“调试模式”下。您可以通过使用@ConditionalOnProperty("debug") 来实现这一点,它确实从Environment 获取信息,因此可以与--debug-Ddebug、...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-13
        • 1970-01-01
        • 1970-01-01
        • 2011-01-22
        • 2014-11-13
        • 2010-10-12
        相关资源
        最近更新 更多