对于配置文件我们原来使用spring的applicationContext.xml来配置
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<!-- standard configuration -->
<value>classpath*:/application.properties</value>
<!-- local dev configuration -->
<value>classpath*:/application.local.properties</value>
<!-- production server configuration -->
<value>classpath*:application.server.properties</value>
< </list>
</property>
</bean>
原来的配置文件是放在src/main/resources/application.properties 下面的, 但在生产/测试服务器中部署的话经常要要改动该配置文件, 先解包然后再改于是客户提出要求把配置文件放到站外.
修改如下
value>file:/var/myapp/application.server.properties</value>
但客户要求不能硬编码外部配置文件的路径, 并把这个路径放在tomcat的配置里面. 于是想改成
<value>file:${yourpath}/application.server.properties</value>
这种形式, 但这样要求yourpath为系统变量. 最后的解决方案是在tomcat的<tomcatHome>/conf/context.xml中添加一个环境变量, 然后重写了一个ContextLoaderListener
最后的配置为
<tomcatHome>/conf/context.xml
applicationContext.xml
...
...
web.xml
ContextLoaderListener.java