我试图从外部位置读取属性文件,我尝试使用contextPath名称作为文件的名称,因为我将在同一台服务器上运行该应用程序的多个实例。我目前正在使用SpringFramework 3.1.4
<context:property-placeholder location="file:/configFolder/#{servletContext.contextPath}.properties" />
文件名最终为/configFolder/#{servletContext.contextPath}.properties
它不会替换变量
还有另一种获得这个价值的方法吗?
答案 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>