一尘不染

获取Spring属性占位符及其解析值的列表

spring-boot

我想使所有属性占位符及其正在运行的Spring(Boot)应用程序的解析值可用于过程监视。第一步,可以将它们写入日志或创建类似于application.pid文件的“
resolved.properties”文件。应该考虑使用属性占位符的所有属性(隐式/显式)。

动机:通常很难在操作过程中知道已解析属性的值。系统属性或命令行参数是“可见的”,但是@Value("${timeout:30000}")很难找到代码中的隐藏默认值(如)。我希望能够回答以下问题:“正在运行的应用程序的配置看起来如何?”
以一种通用的方式,可以在我的所有spring应用程序中使用。

我知道Spring Boot Actuator /configprops端点,但这仅包括@ConfigurationProperties。我想获得使用占位符的所有属性的列表。

该要求似乎不是新的,但我想知道当今是否有适当的(可引导的)方法。


阅读 360

收藏
2020-05-30

共1个答案

一尘不染

(当前)无法获取抽象中的
所有属性Environment。这是故意的,可以在此处阅读。这也是为什么无法获得用于解析的所有值的原因。

值和分辨率在运行时记录下来,告知在运行时从哪个位置解析了哪个键。但是该日志记录非常冗长,每次使用a时StringValueResolver都会记录一次。

通过提供自己的自定义项(PropertySourcesPlaceholderConfigurer可能维护已解决的键/值对的集合),可能会得到部分结果。但是,并非每个解决方案都使用PropertySourcesPlaceholderConfigurer某些解决方案,而直接使用一种StringValueResolver实现绕过PropertySourcesPlaceholderConfigurer

2020-05-30