Spring环境无法解析占位符



使用弹簧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"/>

最新更新