springcloud使用profile實現(xiàn)多環(huán)境配置方式
使用profile實現(xiàn)多環(huán)境配置
基本介紹
在開發(fā)過程中,我們的項目會存在不同的運行環(huán)境,比如開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境,而我們的項目在不同的環(huán)境中,有的配置可能會不一樣,比如數(shù)據(jù)源配置、日志文件配置、以及一些軟件運行過程中的基本配置,那每次我們將軟件部署到不同的環(huán)境時,都需要修改相應的配置文件,這樣來回修改,很容易出錯,而且浪費勞動力。
springcloud默認會訪問的配置文件名是application.properties,
我們?nèi)绻獎?chuàng)建多環(huán)境的配置文件的話,文件名格式應為:application-{profile}.properties
其中的{profile}用來標識不同的環(huán)境,如application-native.properties文件可以用來配置本地環(huán)境、application-prod.properties文件可以用來配置生產(chǎn)環(huán)境。
springcloud中通過“spring.profiles.active”屬性來指定{profile},如spring.profiles.active=native,則使用的是application-native.properties配置文件。
由于springcloud配置中心和springboot的多環(huán)境配置并沒有打通,
所以使用java -jar xxxx.jar --spring.profiles.active=prod命令只能對springboot項目中的配置有效,
并不能從配置中心獲取不同的環(huán)境配置,想要實現(xiàn)目標還需要多做一些工作。
項目配置
在bootstrap.yml文件中配置配置中心,如下所示
使用三個短橫線將不同環(huán)境分隔開,這樣可以在一個文件中完成多個環(huán)境配置
spring: profiles: active: dev --- spring: profiles: dev cloud: bootstrap: enabled: false config: uri: http://localhost:8888 name: webclient profile: dev --- spring: profiles: test cloud: bootstrap: enabled: false config: uri: http://localhost:8888 name: webclient profile: test --- spring: profiles: prod cloud: bootstrap: enabled: false config: uri: http://localhost:8888 name: webclient profile: prod
而頂層pom中的配置情況是如下的:
spring profile多環(huán)境配置管理
本地、測試、開發(fā)、產(chǎn)品等不同環(huán)境文件配置
現(xiàn)象
如果在開發(fā)時進行一些數(shù)據(jù)庫測試,希望鏈接到一個測試的數(shù)據(jù)庫,以避免對開發(fā)數(shù)據(jù)庫的影響。
開發(fā)時的某些配置比如log4j日志的級別,和生產(chǎn)環(huán)境又有所區(qū)別。
各種此類的需求,讓我希望有一個簡單的切換開發(fā)環(huán)境的好辦法。
解決
現(xiàn)在spring3.1也給我們帶來了profile,可以方便快速的切換環(huán)境。
使用也是非常方便。只要在applicationContext.xml中添加下邊的內(nèi)容,就可以了
<!-- 開發(fā)環(huán)境配置文件 --> ? ? <beans profile="test"> ? ? ? ? <context:property-placeholder location="/WEB-INF/test-orm.properties" /> ? ? </beans> ? ? <!-- 本地環(huán)境配置文件 --> ? ? <beans profile="local"> ? ? ? ? <context:property-placeholder location="/WEB-INF/local-orm.properties" /> ? ? </beans> ??profile的定義一定要在文檔的最下邊,否則會有異常。整個xml的結(jié)構(gòu)大概是這樣 <beans xmlns="..." ...> ? ? <bean id="dataSource" ... /> ? ? <bean ... /> ? ? <beans profile="..."> ? ? ? <bean ...> ? ? </beans> ? </beans>
激活 profile
spring 為我們提供了大量的激活 profile 的方法,可以通過代碼來激活,也可以通過系統(tǒng)環(huán)境變量、JVM參數(shù)、servlet上下文參數(shù)來定義 spring.profiles.active 參數(shù)激活 profile,這里我們通過定義 JVM 參數(shù)實現(xiàn)。
1、ENV方式:
ConfigurableEnvironment.setActiveProfiles("test")
2、JVM參數(shù)方式:
tomcat中catalina.bat(.sh中不用“set”) 添加JAVA_OPS。通過設(shè)置active選擇不同配置文件
set JAVA_OPTS="-Dspring.profiles.active=test" ??eclipse 中啟動tomcat。項目右鍵 run as –> run configuration–>Arguments–> VM arguments中添加。local配置文件不必上傳git追蹤管理 -Dspring.profiles.active="local"
3、web.xml方式:
<init-param> ? <param-name>spring.profiles.active</param-name> ? <param-value>production</param-value> </init-param>
4、標注方式(junit單元測試非常實用):
@ActiveProfiles({"unittest","productprofile"})
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章

Java如何將處理完異常之后的程序能夠從拋出異常的地點向下執(zhí)行?

在java中由類名和方法名字符串實現(xiàn)其調(diào)用方式

在idea環(huán)境下構(gòu)建springCloud項目

解決mybatis where-if中if不能識別大寫AND,OR的問題