【发布时间】:2016-01-09 10:05:13
【问题描述】:
我正在尝试找到一种方法来在上下文启动之前记录我的应用程序属性(通过 @ConfigurationProperties 注入到我的 bean 中),以便在初始化所有 bean 之前查看确切的属性。
我尝试在 ApplicationEnvironmentPreparedEvent 上创建一个侦听器,但除了一次检索一个单独的属性之外,没有办法检索所有定义的属性。
有没有简单的方法来做到这一点?有什么方法可以先初始化@ConfigurationProperties 并记录其内容,或者在创建上下文之前检索所有应用程序启动属性?
【问题讨论】:
-
我不确定我明白你想要做什么。无论哪种方式,执行器都可以提供帮助。
/env端点列出了已加载的配置文件及其内容,/configprops为您提供了每个@ConfigurationPropertiesbean 的实际配置的概述。不知道你在追求什么,但那将是一个好的开始。 -
@StéphaneNicoll 我正在尝试在刷新上下文之前记录/显示我的所有配置。例如,我有 JTA bean 等在启动时自动配置,所以如果连接失败,我希望能够查看 bean 初始化之前的配置属性。这不是我们的应用程序,因此上下文路径没有帮助。此外,如果 spring 上下文无法加载(无效的 bean 配置、失败的验证等),我希望能够准确地看到使用了哪些参数。
-
@StéphaneNicoll 我查看了配置道具的 JMX 暴露的执行器 bean,但正如我所怀疑的那样,它从应用程序上下文中检索 bean 以显示它们的值。我的问题是我想在刷新上下文之前记录此信息;如果 bean 在实例化过程中由于不完整或不正确的配置值而失败,我想看看这些值是什么。如果我尝试使用
@PostConstruct方法,也会出现同样的问题 - 在刷新上下文后调用它。我很惊讶没有弹簧记录器可以让我在设置这些值时查看它们。 -
您可以创建一个问题与团队分享这个想法。
标签: java spring-boot listener