spring profile 多環境配置管理


本地、測試、開發、產品等不同環境文件配置

現象

  如果在開發時進行一些數據庫測試,希望鏈接到一個測試的數據庫,以避免對開發數據庫的影響。

  開發時的某些配置比如log4j日志的級別,和生產環境又有所區別。

  各種此類的需求,讓我希望有一個簡單的切換開發環境的好辦法。


解決

  現在spring3.1也給我們帶來了profile,可以方便快速的切換環境。

  使用也是非常方便。只要在applicationContext.xml中添加下邊的內容,就可以了

<!-- 開發環境配置文件 --> <beans profile="test"> <context:property-placeholder location="/WEB-INF/test-orm.properties" /> </beans> <!-- 本地環境配置文件 --> <beans profile="local"> <context:property-placeholder location="/WEB-INF/local-orm.properties" /> </beans>

  profile的定義一定要在文檔的最下邊,否則會有異常。整個xml的結構大概是這樣

<beans xmlns="..." ...> <bean id="dataSource" ... /> <bean ... /> <beans profile="..."> <bean ...> </beans> </beans>

激活 profile

  spring 為我們提供了大量的激活 profile 的方法,可以通過代碼來激活,也可以通過系統環境變量、JVM參數、servlet上下文參數來定義 spring.profiles.active 參數激活 profile,這里我們通過定義 JVM 參數實現。

1、ENV方式:

ConfigurableEnvironment.setActiveProfiles("test")
  • 1
  • 1

2、JVM參數方式:

  tomcat 中 catalina.bat(.sh中不用“set”) 添加JAVA_OPS。通過設置active選擇不同配置文件

set JAVA_OPTS="-Dspring.profiles.active=test"

  eclipse 中啟動tomcat。項目右鍵 run as –> run configuration–>Arguments–> VM arguments中添加。local配置文件不必上傳git追蹤管理

-Dspring.profiles.active="local"

 
 
 
         
  • 1

3、web.xml方式:

<init-param> <param-name>spring.profiles.active</param-name> <param-value>production</param-value> </init-param>

4、標注方式(junit單元測試非常實用):
@ActiveProfiles({"unittest","productprofile"})


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM