我想知道是否有可能从属性文件中读取所有密钥读取而无需借助于读取属性文件本身。我有像这样配置的占位符
<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?
答案 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)));
}