【发布时间】:2017-01-12 19:11:35
【问题描述】:
我想让正在运行的 Spring (Boot) 应用程序的所有属性占位符及其解析值可用于进程监控。在第一步中,这可能只是将它们写入日志或通过创建类似于 application.pid 文件的“resolved.properties”文件。 应考虑使用属性占位符(隐式/显式)的所有属性。
动机:在操作过程中通常很难知道已解析属性的值。系统属性或命令行参数是“可见的”,但例如代码中隐藏的默认值(如@Value("${timeout:30000}"))很难找到。我希望能够回答“正在运行的应用程序的配置如何?”这个问题。以一种通用的方式,我可以在我的所有 Spring 应用程序中使用。
我知道 Spring Boot Actuator /configprops 端点,但这仅包括 @ConfigurationProperties。我想获取使用占位符的所有属性的列表。
【问题讨论】:
-
没有。当前无法列出所有属性源的所有属性值。同样在例如 Spring Cloud Config 的情况下,它不会添加任何内容,因为属性可能会在运行时发生变化。
-
@M.谢谢。我不认为它不会添加任何东西,因为我的配置在运行时不会改变。该功能在 Boot 中以
configprops端点提供,但仅限于@ConfigurationProperties。如果这个限制能够消失,并且 Spring 能够提供对所有占位符及其(当前)值的访问,那就太好了。 -
没有占位符列表,
PropertySources抽象不提供这样的东西。我并不是说它不会很好,但目前还没有...... -
@M. Deinum 毫不犹豫地提供它作为答案。如果是这样的话 - 我会接受(但我会等待一段时间......);-)
标签: java spring spring-boot