用Spring區分開發環境、測試環境、生產環境
我們在專案開發過程中,經常需要往開發環境、測試環境、生產環境部署程式。隨著程式越來越複雜,配置檔案的增多,如果每次部署都去改一遍配置檔案,這種重複的工作會把程式設計師逼瘋。
好在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>
2. 再準備好開發環境配置檔案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
3. 在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>
4. 在web.xml中,配置如下引數:
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>local</param-value>
</context-param>
5. 按以上4步配置完畢後,就可以開發、測試、生產各配置一套配置檔案了。第4步中的配置,是指預設載入local配置檔案。我們在實際使用過程中,肯定是希望在哪個環境下就自動載入哪個環境的配置,那麼該如何做呢?我們來看第6步
6. 我們可以在伺服器(如weblogic)的啟動指令碼中增加一個引數,例如EVN,然後再指定Active的環境是EVN,示例如下:
export ENV=test
export JAVA_OPTIONS="-Dspring.profiles.active=${ENV}”
至此,大功告成。