springcloud使用profile實(shí)現(xiàn)多環(huán)境配置方式
使用profile實(shí)現(xiàn)多環(huán)境配置
基本介紹
在開發(fā)過程中,我們的項(xiàng)目會(huì)存在不同的運(yùn)行環(huán)境,比如開發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境,而我們的項(xiàng)目在不同的環(huán)境中,有的配置可能會(huì)不一樣,比如數(shù)據(jù)源配置、日志文件配置、以及一些軟件運(yùn)行過程中的基本配置,那每次我們將軟件部署到不同的環(huán)境時(shí),都需要修改相應(yīng)的配置文件,這樣來回修改,很容易出錯(cuò),而且浪費(fèi)勞動(dòng)力。
springcloud默認(rèn)會(huì)訪問的配置文件名是application.properties,
我們?nèi)绻獎(jiǎng)?chuàng)建多環(huán)境的配置文件的話,文件名格式應(yīng)為:application-{profile}.properties
其中的{profile}用來標(biāo)識(shí)不同的環(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命令只能對(duì)springboot項(xiàng)目中的配置有效,
并不能從配置中心獲取不同的環(huán)境配置,想要實(shí)現(xiàn)目標(biāo)還需要多做一些工作。
項(xiàng)目配置
在bootstrap.yml文件中配置配置中心,如下所示
使用三個(gè)短橫線將不同環(huán)境分隔開,這樣可以在一個(gè)文件中完成多個(gè)環(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)境配置管理
本地、測(cè)試、開發(fā)、產(chǎn)品等不同環(huán)境文件配置
現(xiàn)象
如果在開發(fā)時(shí)進(jìn)行一些數(shù)據(jù)庫測(cè)試,希望鏈接到一個(gè)測(cè)試的數(shù)據(jù)庫,以避免對(duì)開發(fā)數(shù)據(jù)庫的影響。
開發(fā)時(shí)的某些配置比如log4j日志的級(jí)別,和生產(chǎn)環(huán)境又有所區(qū)別。
各種此類的需求,讓我希望有一個(gè)簡(jiǎn)單的切換開發(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的定義一定要在文檔的最下邊,否則會(huì)有異常。整個(gè)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ù)實(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 中啟動(dòng)tomcat。項(xiàng)目右鍵 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、標(biāo)注方式(junit單元測(cè)試非常實(shí)用):
@ActiveProfiles({"unittest","productprofile"})
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(58)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你2021-08-08

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

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

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

Java上轉(zhuǎn)型和下轉(zhuǎn)型對(duì)象

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