用 Spring 區分開發環境、測試環境、生產環境

lizhiqiang666發表於2019-03-23

我們在專案開發過程中,經常需要往開發環境、測試環境、生產環境部署程式。隨著程式越來越複雜,配置檔案的增多,如果每次部署都去改一遍配置檔案,這種重複的工作會把程式設計師逼瘋。

好在spring提供了這一自動切換的功能,簡要說明如下:

  1. 首先在applicationContext中,對需要配置的引數進行配置,以下圖為例:
<bean id="minaService" class="com.***.***.mina.MinaService"
scope="singleton" lazy-init="false" init-method="init" destroy-method="destroy">
<property name="port" value="${port}" />
<property name="bothIdleTime" value="${both_idle_time}" />
<property name="protocolCodecFilter" ref="protocolCodecFilter" />
<property name="poolSize" value="${pool_size}" />
</bean>
  1. 再準備好開發環境配置檔案config.local.properties,測試環境檔案config.test.properties,以下示例:

    1)開發環境:

     port=8888
     both_idle_time=120
     pool_size=16

    2)測試環境:

     port=6666
     both_idle_time=120
     pool_size=16  
  2. 在spring applicationContext.xml中,配置如下引數:

<beans profile="local">
<context:property-placeholder
ignore-resource-not-found="true" location="classpath:/config/config.local.properties" />
</beans>

  <beans profile="test">
<context:property-placeholder
ignore-resource-not-found="true" location="classpath:/config/config.test.properties" />
</beans>

| Column 1 | Column 2 | Column 3 |
| -------- | -------- | -------- |
| Text     | Text     | Text     |
  1. 在web.xml中,配置如下引數:

    
    <context-param>
         <param-name>spring.profiles.default</param-name>
         <param-value>local</param-value>
    </context-param>
  2. 按以上4步配置完畢後,就可以開發、測試、生產各配置一套配置檔案了。第4步中的配置,是指預設載入local配置檔案。我們在實際使用過程中,肯定是希望在哪個環境下就自動載入哪個環境的配置,那麼該如何做呢?我們來看第6步

  3. 我們可以在伺服器(如weblogic)的啟動指令碼中增加一個引數,例如EVN,然後再指定Active的環境是EVN,示例如下:

     export ENV=test
    
      export JAVA_OPTIONS="-Dspring.profiles.active=${ENV}”

    至此,大功告成。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章