我以前使用现在已弃用的类org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
从服务器的文件系统加载属性文件。我定义了以下bean:
<bean class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer">
<property name="locations" value="${config}"/>
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="searchContextAttributes" value="true"/>
<property name="contextOverride" value="false"/>
<property name="ignoreResourceNotFound" value="true"/>
<property name="searchSystemEnvironment" value="false"/>
</bean>
是启动Tomcat时传递的config
参数,即
-Dconfig=/path/to/application.properties
对于 webapp,我还有一个上下文文件:
<Context docBase="/path/to/application.war">
<Parameter name="host" value="localhost" override="false"/>
<Parameter name="port" value="8080" override="false"/>
</Context>
如果参数.properties
指定的文件-Dconfig
包含一些其他 bean 引用的属性,.properties
则使用文件中的值,否则使用上下文 xml 文件中的值。
这允许我使用 WAR 部署一组默认属性,如果需要,我可以指定一个.properties
文件来覆盖特定值。
现在,我正在更新以使用 Spring 3.1 中的新属性抽象,但我似乎无法弄清楚与之等效的方法是什么?
我以相同的方式部署了相同的上下文文件和战争,现在我在应用程序中有以下内容:
<context:property-placeholder
location="${config}"
system-properties-mode="OVERRIDE"
ignore-resource-not-found="true"
ignore-unresolvable="true"/>
这会查找并使用属性文件中的属性,但它不使用上下文 XML 文件中的值。
使用这个新的属性占位符时,如何让我的应用程序使用上下文参数?
谢谢。