java-将属性公开到Spring环境
作者:互联网
我有一个属性文件,正在使用property-placeholder元素通过XML向Spring注册:
<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 ofPropertyPlaceholderConfigurer
. It
will still do so if using thespring-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 yourxsi:schemaLocation
and continue
using the 3.0 XSD.
因此,我的猜测是您的XML没有使用正确的XSD版本.
标签:properties-file,spring,java,spring-environment 来源: https://codeday.me/bug/20191122/2057977.html