項目開發中切換部署開發、測試、生產多環境

在開發的過程當中,不可避免會接觸到至少三個環境的程序部署:開發、測試和生產環境。web

每一個環境都使用一套數據庫配置,路徑配置等,若是每次都人工的干預每個配置文件,工做會比較繁雜,且容易遺漏而且出錯。spring

spring3.1以後提供了profile功能,能夠切換不一樣的自定義profile環境,惟一的缺點是和maven結合不大好,只能在web.xml中進行修改。數據庫

方法以下:oracle

一、在beans.xml中定義各個環境。maven

<beans profile="develop">
</beans>
<beans profile="test">
</beans>
<beans profile="product">
</beans>

每一個環境若是使用了不一樣的配置文件(properties文件等)能夠在環境中進行加載聲明。測試

該段代碼需在文件根節點的最後一段url

spa

<beans profile="test">  
    <context:property-placeholder location="classpath*:jdbc-test.properties"/>  
</beans> 

二、定義屬性以外的配置,如指定數據庫bean等code

<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>

此處定義了不一樣環境下不一樣的數據庫連接信息xml

三、web.xml中定義當前使用哪一個環境

在web.xml中操做context-param節點

<context-param>
    <param-name>spring.profiles.active</param-name>
    <param-value>product</param-value>
</context-param>

部署時指定哪一個環境爲激活狀態便可。

若是進行junit測試可使用

@ActiveProfiles({"test","develop"}) 

 

附: 若是spring的profile能夠和maven的發佈共同做用就更好了,可是筆者目前還未能成功將2者結合。

配置提醒:

<beans xmlns="http://www.springframework.org/schema/beans" profile="test,develop" -----設置這個以後,數據庫只對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"> <!-- 定義數據鏈接池 --> <!-- 使用spring自帶的DriverManagerDataSource方式 -->

相關文章
相關標籤/搜索