在 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
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