在項目部署中,總是手動修改三套配置環境,過於繁瑣,通過 spring 容器內建的 profile 功能實現開發環境、測試環境、生產環境配置自動切換,讓我倍感輕松。
第一步:定義 profile
現在就可以通過定義 profile 來將開發和生產環境的數據源配置分開,這里我們定義兩個 profile,一個名稱是 development,另一個名稱是 production
<!-- 開發環境配置文件 -->
<beansprofile="development">
<context:property-placeholderlocation="classpath:settings-development.properties"/>
</beans>
<!-- 生產環境配置文件 -->
<beansprofile="productionA">
<context:property-placeholderlocation="classpath:settings-production.properties"/>
</beans>
第二步: 定義默認 profile
默認 profile 是指在沒有任何 profile 被激活的情況下,默認 profile 內定義的內容將被使用,通常可以在 web.xml 中定義全局 servlet 上下文參數 spring.profiles.default 實現
<!-- 配置spring的默認profile -->
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>development</param-value>
</context-param>
第三步: 激活 profile
spring 為我們提供了大量的激活 profile 的方法,可以通過代碼來激活,也可以通過系統環境變量、JVM參數、servlet上下文參數來定義 spring.profiles.active 參數激活 profile,這里我們通過定義 JVM 參數實現。
在生產環境中,以 tomcat 為例,我們在 tomcat 的啟動腳本start.sh中加入以下 JVM 參數
-Dspring.profiles.active="productionA
"
而開發環境中不需要定義該參數,如果不定義,則會使用我們指定的默認 profile ,在這里也就是名稱為 development 的 profile。這樣當項目部署到不同的環境時,便可以通過 JVM 參數來實現不同環境 profile 自動激活
。