在实际开发时经常需要把一些配置信息写在配置文件,比如mysql的主机地址、端口号、用户名和密码等。然而开发环境、测试环境和生产环境所使用的配置可能都不一样,为了避免频繁的修改配置文件,我们可以参数来设置启用哪个环境的配置。
首先,在工程的/src/main/resources目录下分别创建dev(开发环境)、test(测试环境)和release(生产环境)三个子目录,针对不同的环境创建相应的配置文件,目录结构如下图所示:
然后,在applicationContext.xml中修改属性文件的读取路径
<context:property-placeholder location="classpath:/${spring.profiles.active}/*.properties" />
这里可以看出项目运行时会根据spring.profiles.active的值选择读取对应目录下的配置文件。
同时,在web.xml中修改log4j配置的读取路径
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>classpath:/${spring.profiles.active}/log4j2.xml</param-value>
</context-param>
最后,我们需要在运行环境中设置spring.profiles.active的值
-Dspring.profiles.active=dev
如果是在tomcat中部署运行的,我们可以将这个配置加在JVM配置后面
JAVA_OPTS="-Xms4000M -Xmx4000M -Xmn2000M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512M -Dspring.profiles.active=dev"
如果是在Eclipse中开发是运行,可以打开tomcat配置,设置启动配置,如下图所示:
这样通过不同的配置参数,就可以设置多环境配置文件,避免发布生产环境的时候使用了测试环境的配置。