繁体   English   中英

暴露 <property-placeholder> Spring环境的属性

[英]Expose <property-placeholder> properties to the Spring Environment

我有一个属性文件,我通过XML注册Spring,使用property-placeholder元素:

<context:property-placeholder location="classpath:foo.properties" />

我可以使用@Value注释访问属性,例如

@Value("${prefs.key}")
private String prefValue;

但我还需要通过Spring环境访问属性,例如

@Autowired
private Environment env;

public String getValue(String key) {
  return env.getProperty(key);
}

getValue()在这里总是返回null ,即使对于属性文件中定义的键也是如此,因为使用<property-placeholder>似乎不会向Environment公开属性。 有没有办法强制通过环境访问以这种方式加载的属性?

从Spring 3.2.x 参考和介绍博客文章

在Spring 3.1之前, context:property-placeholder namespace元素注册了PropertyPlaceholderConfigurer一个实例。 如果使用命名空间的spring-context-3.0.xsd定义,它仍然会这样做。 也就是说,即使使用Spring 3.1,也可以通过命名空间保留PropertyPlaceholderConfigurer注册; 只是不要更新您的xsi:schemaLocation并继续使用3.0 XSD。

所以,我的猜测是你的XML 没有使用正确的XSD版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM