编程语言
首页 > 编程语言> > java-将属性公开到Spring环境

java-将属性公开到Spring环境

作者:互联网

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

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

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

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

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

@Autowired
private Environment env;

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

即使对于属性文件中定义的键,此处的getValue()始终返回null,因为似乎使用< property-placeholder>不会向环境公开属性.是否有一种方法可以强制通过环境访问以这种方式加载的属性?

解决方法:

从Spring 3.2.x reference和简介blog post开始:

Prior to Spring 3.1, the context:property-placeholder namespace
element registered an instance of PropertyPlaceholderConfigurer. It
will still do so if using the spring-context-3.0.xsd definition of the
namespace. That is, you can preserve registration of
PropertyPlaceholderConfigurer through the namespace, even if using
Spring 3.1; simply do not update your xsi:schemaLocation and continue
using the 3.0 XSD.

因此,我的猜测是您的XML没有使用正确的XSD版本.

标签:properties-file,spring,java,spring-environment
来源: https://codeday.me/bug/20191122/2057977.html