0%

项目中配置文件管理

项目开发中,一般都会有开发环境、测试环境、生产环境三类环境。各种配置在三类环境中也各不相同,要做到打成的包放到各个环境中都能正常运行,就需要把配置独立出来。本文件就介绍下把配置文件独立管理的方式。

以tomcat为例,可以在$TOMCAT_HOME/bin/setenv.sh中添加configFile变量为指定配置文件地址,三个环境中分别配置为各个配置文件在本地的地址:

1
CATALINA_OPTS="$CATALINA_OPTS -DconfigFile="the config file path""

这样在代码中使用System.getProperty("configFile")就可以读取到配置文件地址。然后使用Properties相关方法读取文件,再使用其中各项配置。

如果使用spring,可以直接使用:

1
<context:property-placeholder location="${configFile}"/>

这样就可以在spring中使用configFile中的各项配置了,比如:

1
2
3
4
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>

同时spring还支持从网络上加载配置文件,可以把配置文件放到一台服务器上。然后使用:

1
CATALINA_OPTS="$CATALINA_OPTS -DconfigFile="http://yourserver.com/config-file.properties""

这样只需要维护一个配置文件,不用每个开发人员在本机放一份了。

我见过一些项目使用maven的profile来管理不同环境的配置文件,我建议配置文件不能放在版本库中管理,不然一些敏感的账户密码之类的,每个开发人员都能看到了。如果说只是很少的几个配置项,不需要使用配置文件管理的话,完全可以直接把配置项使用这种方式写到环境变量中,在代码中使用System.getProperty("key")来使用。