在 Spring 中使用 Commons Configuration 2 作为 PropertySource

Use Commons Configuration 2 as PropertySource in Spring

Commons Configuration 2.0 已发布。对于 Commons Configuration 1.0,有一个 Spring 模块工厂 bean (org.springmodules.commons.configuration.CommonsConfigurationFactoryBean) 允许直接使用 Spring 的 Commons 配置 PropertyPlaceholderConfigurer。由于不再维护,因此 问题是如何使用 Commons Configuration 2.0 做到这一点。

当然应该可以复制现有的Spring模块 源代码到项目并将其迁移到 2.0.我知道 Spring 提供 YAML,但它应该仍然是 Commons Configuration(现有的 XML 配置文件应该不会受到影响)。

我为 Commons 配置贡献了一个 PropertySource,它是版本 >=2.1 的一部分:org.apache.commons。configuration2.spring.ConfigurationPropertySource

例如在扩展的 PropertySourcesPlaceholderConfigurer 中使用它:

public class ApacheCommonsConfigPlaceholderConfigurer extends PropertySourcesPlaceholderConfigurer {

   public ApacheCommonsConfigPlaceholderConfigurer(Configuration configuration) {
     ConfigurationPropertySource apacheCommonsConfigPropertySource =
        new ConfigurationPropertySource(configuration.getClass().getName(), configuration);
     MutablePropertySources propertySources = new MutablePropertySources();
     propertySources.addLast(apacheCommonsConfigPropertySource);
     setPropertySources(propertySources);
   }
}

如果这个问题得到解决,代码会更简单:https://jira.spring.io/browse/SPR-9631

另请参阅:http://mail-archives.apache.org/mod_mbox/commons-user/201604.mbox/%3C44F558D5-0A26-4711-9658-39BD9052D751@capitalone.com%3E