【发布时间】:2013-07-05 15:33:14
【问题描述】:
我以前使用现在已弃用的类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>
config 是启动 Tomcat 时传递的参数,即
-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 文件中的值。
如何让我的应用程序在使用这个新的属性占位符时使用上下文参数?
谢谢。
【问题讨论】:
标签: spring