如何判断我的Spring启动应用程序是否处于调试模式?

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

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

但春天说

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

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

检查调试模式的最可靠的方法是查询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在这里寻找任何属性值,但是--debug不是属性的一部分。

调试检测可能是供应商特定的。 (有关调试检测的更多信息,请参阅确定Java应用程序是否在Eclipse中处于调试模式 )。

最简单的方法是对系统属性进行debug选项,例如:

 java -Ddebug Application 

那么你可以注释该属性如下:

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