項目開發(fā)中切換部署開發(fā)、測試、生產(chǎn)多環(huán)境
在開發(fā)的過程中,不可避免會接觸到至少三個環(huán)境的程序部署:開發(fā)、測試和生產(chǎn)環(huán)境。
每個環(huán)境都使用一套數(shù)據(jù)庫配置,路徑配置等,如果每次都人工的干預(yù)每一個配置文件,工作會比較繁雜,且容易遺漏并且出錯。
spring3.1之后提供了profile功能,可以切換不同的自定義profile環(huán)境,唯一的缺點是和maven結(jié)合不大好,只能在web.xml中進行修改。
方法如下:
1、在beans.xml中定義各個環(huán)境。
<beans profile="develop"> </beans> <beans profile="test"> </beans> <beans profile="product"> </beans> |
每個環(huán)境如果使用了不同的配置文件(properties文件等)可以在環(huán)境中進行加載聲明。
該段代碼需在文件根節(jié)點的最后一段
如
<beans profile="test">
<context:property-placeholder location="classpath*:jdbc-test.properties"/>
</beans>
2、定義屬性之外的配置,如指定數(shù)據(jù)庫bean等
<beans profile="test,develop"> <bean id="authDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"> </property> <property name="url" value="jdbc:oracle:thin:@208.120.102.10:1522:ora11g"> </property> <property name="username" value="user"></property> <property name="password" value="passwd"></property> </bean> </beans> <beans profile="product"> <bean id="authDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"> </property> <property name="url" value="jdbc:oracle:thin:@198.121.33.7:1521:ora10g"> </property> <property name="username" value="user"></property> <property name="password" value="passwd"></property> </bean> </beans> |
此處定義了不同環(huán)境下不同的數(shù)據(jù)庫鏈接信息
3、web.xml中定義當(dāng)前使用哪個環(huán)境
在web.xml中操作context-param節(jié)點
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>product</param-value>
</context-param>
部署時指定哪個環(huán)境為激活狀態(tài)即可。
如果進行junit測試可以使用
@ActiveProfiles({"test","develop"})
附: 如果spring的profile可以和maven的發(fā)布共同作用就更好了,但是筆者目前還未能成功將2者結(jié)合。
配置提醒:
<beans xmlns="http://www.springframework.org/schema/beans" profile="test,develop" -----設(shè)置這個之后,數(shù)據(jù)庫只對test,develop有效
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
<!-- 定義數(shù)據(jù)連接池 -->
<!-- 使用spring自帶的DriverManagerDataSource方式 -->