国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

22、springboot的Profile(通過yml配置文件配置 profile,快速切換項目的開發(fā)環(huán)境)

這篇具有很好參考價值的文章主要介紹了22、springboot的Profile(通過yml配置文件配置 profile,快速切換項目的開發(fā)環(huán)境)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

springboot的Profile

★ 何謂Profile

 應(yīng)用所在的運行環(huán)境發(fā)生切換時,配置文件常常就需要隨之修改。

 Profile:——就是一組配置文件及組件的集合。

 可以整個應(yīng)用在不同的profile之間切換(設(shè)置活動profile),整個應(yīng)用都將使用該profile對應(yīng)的配置文件及組件。

 ——每個運行環(huán)境(開發(fā)、測試、上線)都配置成一個對應(yīng)profile,這樣以后只要修改一下活動profile,
 應(yīng)用就可以輕易地在不同的運行環(huán)境之間自由切換。

就是通過 配置的 profile 快速切換開發(fā)環(huán)境。

▲ 1. 聲明Profile

  - @Profile修飾Spring組件(@Component、@Configuration、@ConfigurationProperties),
    意味著該組件僅對特定profile有效。

  - 在配置文件中添加profile名,意味著該配置文件僅對特定profile生效。

  - 多profile的配置文件。

▲ 2. 設(shè)置活動Profile

    spring.profiles.active屬性指定激活哪個Profile
    ——該屬性可通過任意的外部配置源來指定。

★ 通用配置文件 和 Profile特定的配置文件 的區(qū)別

通用配置文件:  application.properties或者application.yml

profile相關(guān):   application-{profile名}.properties或者application-{profile名}.yml

profile相關(guān)的配置文件的優(yōu)先級更高(后加載,后加載的會覆蓋前面加載的)

就是我們要弄一個叫 abc.profile 的配置文件,那么就可以這樣寫 application-abc.properties/yml
(中劃線 -  加上 profile 名字)

代碼演示:

演示如何通過profile配置文件,來快速切換開發(fā)環(huán)境。
步驟:
1、
添加一個正式環(huán)境用的yml----application-dev.yml,寫對應(yīng)的正式環(huán)境配置
添加一個測試環(huán)境用的yml----application-test.yml,寫對應(yīng)的測試環(huán)境配置
一個原本有的通用的application.yml—用來切換開發(fā)環(huán)境和測試環(huán)境

演示通過 application.yml 配置文件中,通過指定對應(yīng)的 profile 名字,來切換開發(fā)環(huán)境
springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端

演示 用 java 類來查看
類用 @Profile 注解 來修飾
@Profile(“dev”) //注解作用:表示這個控制器僅對dev作為活動profile時才生效(就是把開發(fā)環(huán)境切換成 dev ,這個控制器才生效)
springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端

application.yml配置文件中使用 spring.profiles.active 屬性,用于切換活動profile,意味著最終最多時能有一個活動profile,就是最終只能有一個開發(fā)環(huán)境,要么正式,要么測試,要么其他,只能有一個開發(fā)環(huán)境。

但是如果在application.yml 配置文件中,使用 spring.profiles.include屬性 用于添加活動profile,意味著最終可能有多個活動profile,目前來看是多個profile修飾的controller生效。
一開始我以為是多個開發(fā)環(huán)境生效,比如正式環(huán)境和測試環(huán)境都生效,后面發(fā)現(xiàn)是覆蓋的關(guān)系,看起來還是只有一個開發(fā)環(huán)境
新增的活動profile -> add 和 原來的活動profile -> dev ,其實它們會覆蓋,但是具體誰覆蓋誰,是不確定的。
下面演示添加活動profile

★ 添加活動Profile

▲ spring.profiles.include - 添加新的活動profile

          原有的,繼續(xù)生效。
          沒有的,新增。
          相同的,覆蓋——Spring Boot并不確定使用新增profile覆蓋原有的profile

▲ 調(diào)用SpringApplication的setAdditionalProfiles()來添加新的活動Profile

通過添加活動Profile,實際上就相當(dāng)于讓應(yīng)用有了多個活動Profile。


【備注】:
          spring.profiles.active屬性用于切換活動profile,意味著最終最多時能有一個活動profile
          spring.profiles.include屬性用于添加活動profile,意味著最終可能有多個活動profile

如果在application.yml 配置文件中,使用 spring.profiles.include屬性 用于添加活動profile,意味著最終可能有多個活動profile,目前來看是多個profile修飾的controller生效。
一開始我以為是多個開發(fā)環(huán)境生效,比如正式環(huán)境和測試環(huán)境都生效,后面發(fā)現(xiàn)是覆蓋的關(guān)系,看起來還是只有一個開發(fā)環(huán)境

新增的活動profile -> add 和 原來的活動profile -> dev ,其實它們會覆蓋,但是具體誰覆蓋誰,是不確定的。

代碼示例:
添加一個活動profile
springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端
2、使用這個新添加的活動profile,有兩種方式:
方式1:在啟動類添加,用 ctx.setAdditionalProfiles(“add”); 方法
springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端
方式2:在 application.yml 配置文件中添加,用 spring.profiles.include 屬性
springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端
執(zhí)行結(jié)果
application.yml 配置文件啟動的profile 有 dev 和 add 兩個開發(fā)環(huán)境,啟動后使用的端口號是 add 的 8085
springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端

訪問結(jié)果測試:

可以看出 當(dāng) application.yml 指定了 dev 和 add 兩個開發(fā)環(huán)境后,只有 dev 和 add 兩個controller 生效(生效:能訪問到對應(yīng)的被profile注解修飾的controller的方法),
但是開發(fā)環(huán)境是 add 覆蓋了 dev 。
而test 開發(fā)環(huán)境 和 controller 都沒生效。
springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端

★ Profile組

Profile組可以讓一個應(yīng)用里面有多個profile

Profile組也是一個Profile,但該Profile可包含另外幾個Profile。例如:

spring.profiles.group.prod[0]=banner
spring.profiles.group.prod[1]=server

上面定義了一個Profile組:prod,該組包含banner和server兩個Profile。


因此如果將上面prod設(shè)為活動Profile,那就意味著項目中有3個活動profile,依次是prod、banner、server

——通過使用這種方式,可以讓項目設(shè)置多個活動Profile。

▲ Profile組及其成員的加載順序:

先加載Profile組對應(yīng)的資源(比如先加載prod)
然后按順序加載各組成員Profile對應(yīng)的資源(比如再加載banner、server)。
后加載的能覆蓋先加載的。

——Profile組 對應(yīng)的資源,總會被組成員對應(yīng)的資源所覆蓋。

【備注:】通過使用Profile組,可以設(shè)置多個活動profile,且它們的覆蓋順序是相當(dāng)穩(wěn)定的。
先加載組,然后再加載組里面的成員,后加載的會覆蓋前面的。

代碼演示:

需求:演示 profile 組 和 其成員的加載順序。

1、先在application.yml 中設(shè)置一個profile組,叫g(shù)p,
然后創(chuàng)建一個 profile 叫 application-gp.yml
【spring.profiles.active屬性用于切換活動profile,意味著最終最多時能有一個活動profile】

如圖:可以看出用 active ,表示切換到 gp 這個profile ,所以最先加載的就是這個 gp profile,
然后再加載 gp 這個組里面的成員,加載順序可以看成是按我們寫的順序從上往下,如圖中,先加載 dev 這個 profile ,然后再加載 test 這個 profile。
加載順序為:gp – dev – test
因為后加載的profile 會覆蓋 先加載的profile,所以最終執(zhí)行的 profile 就是 test 這個

springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端

訪問各個profile的方法,驗證加載順序

springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端
可以看出來:
1、啟動程序后,訪問的端口是8084,因為test這個profile配置文件的端口就是8084,說明test是最后加載的,覆蓋了前面的幾個profile。
2、然后訪問每個 profile 的控制器的方法,發(fā)現(xiàn) gp、dev、test 都能訪問成功,只有add這個profile訪問失敗,因為從上面的 application.yml 配置文件可以看出只配置了 gp、dev、test 這三個profile。而add這個沒有配置,肯定訪問失敗
3、可以看出無論是訪問 gp這個profile組,還是訪問 dev、test 這兩個活動profile,返回的結(jié)果都是 test 這個profile 的數(shù)據(jù)。說明因為配置了 gp、dev、test 這三個profile,所以表示gp、dev、test這三個控制器都生效,就是這三個開發(fā)環(huán)境都生效了。
但是因為test最后加載,把前面的gp和dev都覆蓋了,所以最終的開發(fā)環(huán)境就是以test這個profile為主。

springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端

★ 混合復(fù)合類型

混合復(fù)合類型,其實就是多個profile的覆蓋規(guī)則。

1. 若可從多個配置文件中加載List類型的屬性時,后加載的List集合總是完全替換之前加載List集合。
   比如從第一個配置文件中加載的List集合包含2個元素,接著從第二個配置文件中加載的List集合包含1個元素,那么這個List集合屬性最終就只有一個元素。


2. 若可從多個配置文件中加載Map類型的屬性時,后加載的Map的key-value對將會添加到之前加載Map中。
   比如先從第一個配置文件中加載的Map包含2個key-value對,接著從第二個配置文件中加載的Map集合包含1個key-value對、且該key-value與之前的兩個key-value對不沖突,那么這個Map屬性最終會包含3個key-value對。

【歸納】: List集合是完全覆蓋,Map集合則是元素添加。

代碼演示:
需求:演示 profile 里面的 list (覆蓋)和 Map (添加)

springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端

定義這個屬性處理類,作用是:拿對應(yīng)的yml配置文件中的值
springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端
這個是控制器中的方法,通過訪問,能更直觀的看到數(shù)據(jù)
springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端

測試結(jié)果: List集合是完全覆蓋,Map集合則是元素添加。springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端

★ 根據(jù)環(huán)境自動更新Profile(多Profile的配置文件)

可使用三個減號(---)將一份.yml配置文件分割成邏輯上的多個片段(*.properties文件使用#---進(jìn)行分割),然
后可通過如下屬性指定各片段“條件性”生效:

▲ spring.config.activate.on-profile:
   指定此行配置以下的配置僅當(dāng)指定Profile激活時才有效。該屬性值也支持使用取反運算符(!),比如“!dev”表示非dev Profile時有效。


▲ spring.config.activate.on-cloud-platform:指定此行配置以下的配置僅當(dāng)處于指定云平臺上時才有效。

   如果使用此行配置,意味著該應(yīng)用可根據(jù)部署的云平臺自動切換它的配置片段(Profile)


【本質(zhì)】:就是將多個針對特定Profile的配置文件合并到一起。

代碼示例:

總結(jié)這個:根據(jù)環(huán)境自動更新Profile,就是上面我們創(chuàng)建很多yml配置文件,一個profile就創(chuàng)建一個yml配置文件,
如:application-dev.yml,application-gp.yml,application-test.yml,然后這三個活動profile需要在application.yml 里面進(jìn)行指定加載一個或者多個。

現(xiàn)在的需求:就是把a(bǔ)pplication-dev.yml,application-gp.yml,application-test.yml這三個profile的代碼直接全部都寫在application.yml 這個配置文件就行了,就不用創(chuàng)建那么多的application-xxxprofile.yml 的文件了。

三個配置文件的數(shù)據(jù),放在同一份yml中,需要用 — 這三個減號進(jìn)行分割,表示分成一個一個片段。

代碼:
把dev和test這兩個profile配置文件的代碼都添加到 application.yml這個配置文件里面,然后把原本各自的application-dev.yml,application-test.yml 里面的數(shù)據(jù)注釋掉
springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端
現(xiàn)在只指定了 dev ,所以也只有dev這個開發(fā)環(huán)境能生效。
訪問測試:
測試結(jié)果發(fā)現(xiàn)跟自己預(yù)料的不一樣。
如上面的圖可以看到指定的是 dev 開發(fā)環(huán)境,然后dev 這個片段在9-30行,test在31-52行,啟動項目后,發(fā)現(xiàn)第6行無論是指定dev還是test,最終加載的都是test這個開發(fā)環(huán)境,就像是test把dev覆蓋了一樣。
如圖:按理說啟動后端口應(yīng)該是dev的8083

springboot profiles,Spring Boot,spring boot,數(shù)據(jù)庫,后端文章來源地址http://www.zghlxwxcb.cn/news/detail-787408.html

到了這里,關(guān)于22、springboot的Profile(通過yml配置文件配置 profile,快速切換項目的開發(fā)環(huán)境)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • SpringBoot多環(huán)境配置Maven Profile組

    SpringBoot多環(huán)境配置Maven Profile組

    Maven profile組 注意切換配置時? ?mvn clean下? 或者 clean 加install 或者compile 編譯 clean之后? install下?或者compile 編譯 nohup java -Xms256m -Xmx512m -Dfile.encoding=UTF-8 -jar demo.jar --spring.profiles.active=prod system.log 21

    2024年02月02日
    瀏覽(19)
  • linux profile文件環(huán)境變量配置

    linux profile文件環(huán)境變量配置

    profile 文件位于/etc/目錄下 /etc/profile , 當(dāng)?shù)侨胂到y(tǒng)時候獲得一個 shell 進(jìn)程時,其讀取環(huán)境profile 文件時候會讀取,/etc/bash.bashrc,/etc/profile.d 文件下配置的sh文件,所以我們也可以在profile.d 和bash.bashrc 目錄下創(chuàng)建sh文件,配置環(huán)境變量 profile,路徑:/etc/profile,用于設(shè)置系統(tǒng)級

    2024年02月05日
    瀏覽(28)
  • mac 配置環(huán)境變量 .bash_profile文件

    打開.bash_profile文件 open -e ~/.bash_profile 編輯:增減自己的各軟件配置 export M2_HOME=/Users/lizhen/apache-maven-3.5.4 export PATH=$PATH:$M2_HOME/bin PATH=$PATH:/usr/local/mysql/bin # JAVA JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-18.0.2.jdk/Contents/Home # Android SDK export ANDROID_HOME=/Users/lizhen/Library/Android/sdk export PATH

    2024年02月06日
    瀏覽(19)
  • 解析Spring Boot中的Profile:配置文件與代碼的雙重掌控

    解析Spring Boot中的Profile:配置文件與代碼的雙重掌控

    基于 Spring Boot 創(chuàng)建 Web 應(yīng)用程序的方法有很多,我們選擇在idea中直接進(jìn)行創(chuàng)建,服務(wù)器URL選擇Spring Initializer 網(wǎng)站,類型選擇Maven項目,java版本根據(jù)jdk版本進(jìn)行選擇。 然后添加相應(yīng)依賴以及選擇spring boot版本 接下來我們寫一個Controller 現(xiàn)在我們需要對這個應(yīng)用程序進(jìn)行打包,使

    2024年02月09日
    瀏覽(28)
  • SpringBoot復(fù)習(xí):(7)@Profile注解

    其中,student這個bean只有指定了profile才會裝配,比如在application.properties中: @Profile注解不僅可以用在@Bean上,還可以用在注解類上,用在注解類時 只有設(shè)定了profile為指定的值,該配置類中的所有bean才會裝配

    2024年02月15日
    瀏覽(17)
  • 【maven】通過profiles實現(xiàn):怎樣激活某個倉庫、同時加載多個profile、不同環(huán)境加載不同依賴jar

    【maven】通過profiles實現(xiàn):怎樣激活某個倉庫、同時加載多個profile、不同環(huán)境加載不同依賴jar

    Maven中的profile是一組可選的配置,可以用來設(shè)置或者覆蓋配置默認(rèn)值。有了profile,你就可以為不同的環(huán)境定制構(gòu)建。 profile可以在pom.xml中和maven的setting.xml文件中配置,如下: 在上述示例中,我們定義了一個名為\\\"nexus\\\"的profile,并在其中設(shè)置了一個名為\\\"my-repo\\\"的Maven倉庫。該倉

    2024年02月13日
    瀏覽(16)
  • Linux 和 MacOS 中的 profile 文件詳解(一)

    profile 文件是 Linux、MacOS 等(unix、類 unix 系統(tǒng))系統(tǒng)中的一種配置文件,主要用于設(shè)置系統(tǒng)和用戶的環(huán)境變量。 在 shell 中,可以通過執(zhí)行 profile 文件來設(shè)置用戶的環(huán)境變量。shell 有兩種運行模式:login shell 和 non-login shell。 login shell 是指用戶登錄系統(tǒng)時啟動的 shell,login sh

    2024年02月14日
    瀏覽(21)
  • Linux 和 MacOS 中的 profile 文件詳解(二)

    上篇文章講解了 profile 文件的作用、login shell 和 non-login shell 的定義、不同 profile 被 bash shell 在不同情況下的加載順序和作用,本文講解一下 zsh shell 相關(guān)的知識。 ?MacOS 從 Catalina 版本開始將 zsh 作為默認(rèn)登錄 shell 和交互式 shell。 zsh 的配置文件加載順序大致如下: /etc/zshen

    2024年02月13日
    瀏覽(19)
  • Mac環(huán)境配置(Java)----使用bash_profile進(jìn)行配置

    Mac環(huán)境配置(Java)----使用bash_profile進(jìn)行配置

    目錄 ?一、下載Java 1、官方地址: 2、網(wǎng)盤下載地址(Java8): 二、Java環(huán)境配置(以Java8配置為例,所有版本配置方法一樣) 1、打開軟件--終端 2、首先查看本機(jī)Java的安裝地址(系統(tǒng)默認(rèn)的) 3、查看到Java8安裝的路徑如下:? 4、如果是第一次配置環(huán)境變量,使用命令:【t

    2024年02月16日
    瀏覽(23)
  • Spring Profile與PropertyPlaceholderConfigurer實現(xiàn)項目多環(huán)境配置切換

    Spring Profile與PropertyPlaceholderConfigurer實現(xiàn)項目多環(huán)境配置切換

    最近考慮項目在不同環(huán)境下配置的切換,使用profile注解搭配PropertyPlaceholderConfigurer實現(xiàn)對配置文件的切換,簡單寫了個demo記錄下實現(xiàn)。 @Profile @Profile 通過對bean進(jìn)行修飾,來限定spring在bean管理時的初始化情況,只有環(huán)境中激活的profile狀態(tài)和修飾的value值對應(yīng)時,該bean才會被

    2024年02月12日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包