applicationContext.xml没有读取servletContext.contextPath

时间:2014-07-15 16:34:52

标签: java spring java-ee

我试图从外部位置读取属性文件,我尝试使用contextPath名称作为文件的名称,因为我将在同一台服务器上运行该应用程序的多个实例。我目前正在使用SpringFramework 3.1.4

<context:property-placeholder location="file:/configFolder/#{servletContext.contextPath}.properties" />

文件名最终为/configFolder/#{servletContext.contextPath}.properties 它不会替换变量 还有另一种获得这个价值的方法吗?

2 个答案:

答案 0 :(得分:2)

#{servletContext.contextPath}是一个仅在JSP和Facelets中通过表达式语言知道的变量。这在春天不起作用。您应该将配置文件放在jar中的资源文件夹中,然后从那里检索它。

你声明这在其他项目中有效,但那是因为Spring支持一个名为servletContext的变量(IMO错误)。看起来Spring MVC 3.2不再支持这一点,如下所述:Resolving servletContext.contextPath Expression in Spring 3.2

答案 1 :(得分:2)

尝试:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="file:/config/#{servletContext.contextPath}.properties" />
</bean>