目录
概述
在进行java web工程开发的时候,开发环境、测试环境、生产环境都有各自不同的配置。在功能开发阶段这个问题可能还没关注,一般这时只有一套配置环境。项目交付测试的时候问题就来了,打的包不方便部署,每次升级都要实施人员做完修改配置文件才能正常启动。解决这个问题要求我们有三套(根据实际情况,可能两套也够)配置文件,在resources文件夹下创建多套配置文件。类似下图的结构
有了不同的配置文件,应该如何调用呢?有两种处理思路,一是在打包时指定加载不同目录下的配置文件,这时war包内包含所有的配置文件;二是在打包时仅把特定的目录下配置文件打进去,加载固定目录下配置文件,这时war内容仅包含指定的配置文件。两种情况各有利弊吧,本篇文章先说下第一种处理思路
spring配置文件
加在context.xml配置文件中,如果需要在controller中访问,也要加在springMvc.xml中
<context:property-placeholder location="classpath:${spring.profiles.active}/config.properties" order="4" ignore-unresolvable="true"/>
那接下来就是如何给变量spring.profiles.active赋值的问题。这里spring.profiles.active有两个候选值dev和release(与第一张图中的两个文件夹名称对应),看下在不同的场景下如何给变量spring.profiles.active赋值
开发环境配置
给tomcat的启动变量赋值,具体操作如下
这样设置后再启动服务器,就给变量 spring.profiles.active 赋值为dev,加载dev文件夹下的配置文件
生产环境配置
生产环境下,通过JAVA_OPTS给spring.profiles.active赋值,具体操作如下
tomcat的jvm的参数设置是在${catlina.home.}/bin/catlina.bat中设置的(linux系统请自行百度,哈哈),我的设置如下
文字版:
set JAVA_OPTS=%JAVA_OPTS% -server -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m -Dspring.profiles.active=release
这样设置后,打完包就看可以直接部署了,非常方便
(完)