我有一个带有xml配置的Spring应用程序(v4.0.8),我需要动态访问属性而不是使用@Value
注释。我尝试使用这方法,其中一个使用@ConfigurationProperties
一个Map,它给了我地图中的所有属性,另一个方法是使用Environment.getProperty
。
这两种方法都是从Environment的propertySources获取属性。不幸的是,它包含5个属性源,包括系统属性等,但不包含我的属性文件。因此我无法访问我的房产。
我正在使用来自jasypt的EncryptablePropertySourcesPlaceholderConfigurer
添加我的属性,这是一个解密加密属性值的PropertySourcesPlaceholderConfigurer
的简单实现。 PropertySourcesPlaceholderConfigurer
没有向Environment.propertySources
添加属性,我无法弄清楚如何自己扩展它而不是使用jasypt实现并手动将它们添加到属性源。
两个注释:
@Value
注释工作正常,因为它不使用Environment但在bean创建期间通过配置器。这没有问题。ApplicationEnvironmentPreparedEvent
并将我的属性添加到Environment而不是实现PropertySourcesPlaceholderConfigurer
来实现我的目标,附加到Environment.propertySources。但这仅适用于Spring启动应用程序,而我的遗留应用程序不是Spring启动应用程序。