我想根据--debug
开关是否存在来修改我的应用程序的工作方式。我在我的@Configuration
文件中尝试了这个:
@Value("\${debug}")
lateinit var debug: String
但是春天说
无法在值“$ {debug}”
中解析占位符'debug'
如何查询--debug
选项的状态?
答案 0 :(得分:7)
检查调试模式最有效的方法是查询Environment
。这将允许您检测模式是否已启用,无论是通过命令行参数(--debug
),系统属性(-Ddebug
),环境变量(DEBUG=true
)等完成的。
您可以像其他任何依赖项一样注入Environment
的实例,也可以实现EnvironmentAware
。然后可以使用getProperty(String)
方法检索debug
属性的值。如果debug
属性具有debug
以外的非空值,则Spring Boot会将false
视为已启用:
private boolean isSet(ConfigurableEnvironment environment, String property) {
String value = environment.getProperty(property);
return (value != null && !value.equals("false"));
}
答案 1 :(得分:0)
我担心不可能以这种方式获得调试模式。
Spring在这里查找任何属性值,但--debug
不属于属性。
调试检测可能是特定于供应商的。 (有关调试检测的详细信息,请参阅Determine if a java application is in debug mode in Eclipse。)
答案 2 :(得分:0)
最简单的方法是使debug
选项成为系统属性,例如:
java -Ddebug Application
然后您可以按如下方式注释该属性:
@Value("#{systemProperties.debug != null}")
var debug: Boolean = false;
// ^--- using a default value to avoiding NPException
答案 3 :(得分:0)
如之前在the reply by Andy中所述,可以评估属性debug
,但是您需要从Environment
开始计算。
我想以“调试模式”激活组件时遇到相同的问题。您可以使用@ConditionalOnProperty("debug")
来实现,它确实从Environment
获取信息,因此可以与--debug
,-Ddebug
,…