用Spring开发Web项目的时候,有些情况下,需要在不解开war包的情况下修改配置在不同环境读取不同的配置文件,例如:开发环境:web-dev-config.properties,测试环境:web-test-config.properties,生产环境:web-production-config.properties,这时候就需要动态的载入配置文件。
从JVM参数获取配置文件路径
JVM参数:-Dweb.config.path=/etc/myproj/web.config.properties
Spring PropertyPlaceholderConfigurer配置如下:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>file:${web.config.path}</value>
</property>
<property name="fileEncoding" value="utf-8" />
</bean>
设置默认路径
可以设置一个默认的配置文件路径,如果不指定JVM参数,则从该路径读取
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>file:${mir_mon_api.config.path:/etc/myproj/web.config.properties}</value>
</property>
<property name="fileEncoding" value="utf-8" />
</bean>
设置环境
JVM参数:-Denv=test -Dconfig.path=/etc/myproj
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>file:${config.path}/web-${env}-config.properties</value>
</property>
<property name="fileEncoding" value="utf-8" />
</bean>
本文详细介绍了如何使用Spring框架在不解开war包的情况下,通过JVM参数动态载入配置文件,以实现开发、测试、生产环境的配置文件区分。包括从JVM参数获取配置文件路径、设置默认路径以及根据环境动态加载配置文件的实现步骤。

被折叠的 条评论
为什么被折叠?



