使用弹簧3.2.5。我有一个web项目,有两个应用程序上下文(一个是另一个的父级)。
我在xml中配置了一个占位符配置器,如下所示:
<context:property-placeholder location="WEB-INF/properties/*.properties, classpath:local.config.properties, file:${global.config.file}"
ignore-unresolvable="true"
ignore-resource-not-found="false"/>
变量"global.config.file"是在传递给启动tomcat的JVM参数中指定的文件的路径。
在我的代码中,我可以成功地从如下文件中注入值:
@Value("${blabla}")
private String blabla;
然而,当我尝试通过spring的Environment对象以编程方式解析占位符时,占位符不会被真正的值取代:
@Inject
Environment env;
// ...
public void test() {
String blabla = env.resolvePlaceholders("${blabla}");
}
blabla变量将包含其未解析的值:"${blabla}"此外,做:
env.getProperty("blabla");
返回null。注意,我使用的是3.0:以上的上下文模式位置
http://www.springframework.org/schema/context/spring-context-3.2.xsd
有人能帮我理解我错过了什么吗?或者有关于如何进一步调试的线索吗?
尝试使用classpath*:
,例如:
<context:property-placeholder location="classpath*:WEB-INF/properties/*.properties, classpath*:local.config.properties, file:${global.config.file}"
ignore-unresolvable="true"
ignore-resource-not-found="false"/>