如何判断我的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
- 为什么我的场景是空的?
- ClassCastException:android.inputmethodservice.KeyboardView无法转换为com.support.mukhtar.simplekeyboard.CustomKeyboardView android
- 用Kotlin解释@Configuration @AutoConfigureAfter
- 如何让黄瓜让Spring注入一步定义类?
- Spring Boot无法在IntelliJ中运行单个测试
- Spring MVC控制器PathVariables上的Java bean验证
- 在@Transactional方法调用期间,初始化期间Bean属性不为null变为null
- Spring @Autowire不在Kotlin工作
- 带kotlin功能路由器的非反应性Spring Web
- JUnit,@ControllerAdvice和缺少Kotlin中检查的异常
- Spring数据Elasticsearch与Kotlin数据类的脚本字段导致Jackson序列化问题