如何读取使用<context:property-placeholder> </context:property-placeholder>配置的所有属性键

时间:2012-12-13 23:42:09

标签: spring

我想知道是否有可能从属性文件中读取所有密钥读取而无需借助于读取属性文件本身。我有像这样配置的占位符

<context:property-placeholder
    system-properties-mode="OVERRIDE"
    ignore-resource-not-found="true"
    location="classpath:/defaults.properties, file:${config.location:/etc/default/example.properties}" />

几乎可以解决我需要的所有案例。现在,我想要一个配置概述页面,我可以验证是否所有设置都已正确配置,而无需手动@Value将所有值注入某些@Controller并使用{将它们传递给视图{1}}。

任何想法如何处理这个问题,或者甚至可以使用property-placeholder?

1 个答案:

答案 0 :(得分:0)

PropertyPlaceHolderConfigure不公开他的属性,但你可以从BeanDefinition获取位置并加载具有相同结果的位置。

BeanDefinition bd = configurableApplicationContext.getBeanFactory().getBeanDefinition("org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0");
    String[] locations = (String[]) bd.getPropertyValues().getPropertyValue("locations").getValue();
    Properties props = new Properties();
    for (String loc : locations) {
        props.putAll(PropertiesLoaderUtils.loadProperties(configurableApplicationContext.getResource(loc)));
    }