<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Spring Boot 2.4.0 發(fā)布,配置文件重大調(diào)整,不要亂升級(jí)!!

          共 4549字,需瀏覽 10分鐘

           ·

          2020-12-11 13:18



          前段時(shí)間 Spring Boot 2.4.0 發(fā)布了,棧長(zhǎng)作了一個(gè)新特性全盤(pán)解讀,其中介紹了一個(gè)很重要的變革,那就是配置文件。

          配置文件可是每個(gè)框架的核心,不得不搞清楚,所以,這篇棧長(zhǎng)就帶大家深入實(shí)戰(zhàn)了解下 Spring Boot 2.4 配置文件都有哪些具體變更,以及如何遷移,已助你決定是否遷移到 Spring Boot 2.4。

          概要

          Spring Boot 2.4 改進(jìn)了處理 application.properties 和 application.yml 配置文件的方式。更新后的邏輯旨在簡(jiǎn)化和合理化外部配置的加載方式,但有些參數(shù)的組合形式卻得到了限制,升級(jí)請(qǐng)謹(jǐn)慎。

          如果你的應(yīng)用工程只有一個(gè)簡(jiǎn)單的 application.properties 或 application.yml 文件,則可以進(jìn)行無(wú)縫升級(jí)到 Spring Boot 2.4.0。

          但是,如果你的配置較為復(fù)雜,比如說(shuō)有指定 profile 的參數(shù),或者有基于 profile 激活的參數(shù),要使用新功能就需要進(jìn)行一些更改。

          更多細(xì)節(jié)可參考:

          https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Config-Data-Migration-Guide

          變更細(xì)節(jié)

          1、YAML 配置排序變更

          如果你在 application.yml 配置中啟用了多套配置(即用 --- 分隔的多套配置),那就需要注意了,因?yàn)樵?Spring Boot 2.4 中,配置參數(shù)是按在配置文件中定義的順序先后進(jìn)行加載的,因?yàn)樵?Spring Boot 2.3 及之前的版本中,各個(gè)配置參數(shù)是基于 "profile" 的激活的順序來(lái)加載的,后面激活加載的參數(shù)會(huì)覆蓋之前的。

          如果你有一些配置參數(shù),它們之間又是互相覆蓋,那就要確保所需要的參數(shù)要放在文件最后。

          如在 Spring Boot 2.3 中:

          spring:
            profiles:
              active:
                - prod
                - prodmq
                - proddb

          ---
          spring:
            profiles: prod
            
          env: prod  
            
          ---
          spring:
            profiles: proddb

          env: proddb

          ---
          spring:
            profiles: prodmq

          env: prodmq  

          Spring Boot 基礎(chǔ)構(gòu)建及 profile 基本介紹這里就不介紹了,關(guān)注公眾號(hào)Java技術(shù)棧回復(fù)關(guān)鍵字 "boot",可以閱讀我寫(xiě)的幾十篇往期實(shí)戰(zhàn)文章。

          Spring Boot 教程和示例代碼已上傳到 Github:

          https://github.com/javastacks/spring-boot-best-practice

          回到上面的配置,如果同時(shí)啟用多個(gè) profile 的話,后面的會(huì)覆蓋前面的,即 proddb 里面的配置參數(shù)會(huì)覆蓋 prodmq 的,所以 env 的值為:proddb。

          而如果升級(jí)到了 Spring Boot 2.4,env 的值則為:prodmq,因?yàn)榘错樞蚣虞d的話 prodmq 中的 env 在配置文件中最下方。

          所以,如果升級(jí)到 Spring Boot 2.4,就需要檢查 "profile" 這些配置參數(shù)之間的關(guān)系,可能還需要對(duì) YAML 中的配置重新排序。

          2、Profile 配置覆蓋變更

          如果你使用了 JAR 外部化配置,并且也使用了基于 "profile" 的特定配置文件,那你就要檢查下配置是否按預(yù)期加載了。

          因?yàn)樵谥暗陌姹局校琂AR 包外部的 application.properties 配置文件不會(huì)覆蓋 JAR 包里面的基于 "profile" 的 application-xxxprofile.properties 配置文件。

          從 Spring Boot 2.4 開(kāi)始,外部化配置參數(shù)會(huì)覆蓋內(nèi)部的配置參數(shù)(不管是否基于 "profile" 激活),這個(gè)也是修復(fù)  Spring Boot 上的的一個(gè) Issue:

          https://github.com/spring-projects/spring-boot/issues/3845

          這個(gè)問(wèn)題的就是指 JAR 包外部的應(yīng)用程序參數(shù)應(yīng)優(yōu)先于 JAR 包內(nèi)部的特定激活的配置參數(shù)。

          3、Profile 配置參數(shù)變更

          如果你使用了 spring.profiles 屬性指定了多套 YMAL 配置文件,現(xiàn)在需要使用新參數(shù)替代:

          spring.config.activate.on-profile

          配置示例:

          ---
          spring.config.activate.on-profile: dev

          env: dev

          server:
            port: 8080

          ---
          spring.config.activate.on-profile: test

          env: test

          server:
            port: 8081

          ---
          spring.config.activate.on-profile: prod

          env: prod

          server:
            port: 8082

          ---
          spring.config.activate.on-profile: proddb

          db:
            name: mysql

          env: proddb

          ---
          spring.config.activate.on-profile: prodmq

          mq:
            address: localhost

          env: prodmq

          和之前的邏輯一樣,可以繼續(xù)使用 spring.profiles.active 來(lái)激活特定的 profiles 列表,或者也可以使用表達(dá)式激活,如:prod & cloud,但是不能和 spring.config.activate.on-profile 結(jié)合使用。

          另外,如果你之前使用了 spring.profiles.includespring.profiles 結(jié)合使用,就需要使用新的 "profile group" 特性了。

          配置 profile group 組示例:

          spring:
            profiles:
              active:
                - prodall
              group:
                prodall:
                  - prod
                  - prodmq
                  - proddb

          這樣就定義了一個(gè) "prodall" 組,包含了 prod, proddb, prodmq 三個(gè) profile,同時(shí)在配置文件中直接使用 spring.profiles.active 來(lái)激活 "prodall" 組,這樣就同時(shí)激活了 prod, proddb, prodmq。

          4、回歸傳統(tǒng)模式

          如果你想繼續(xù)使用 Spring Boot 2.3 的配置文件邏輯,或者還沒(méi)準(zhǔn)備好遷移到 Spring Boot 2.4,也可以通過(guò)在 application.properties 或者 application.yml 配置文件中添加以下參數(shù)回到傳統(tǒng)模式:

          spring.config.use-legacy-processing = true

          如果不指定這個(gè)參數(shù)為:true,那么在 Spring Boot 2.4 中就是默認(rèn)新的配置文件處理邏輯。

          總結(jié)

          總結(jié)下來(lái),個(gè)人感覺(jué)某些變更著實(shí)沒(méi)什么卵用,但也不得不跟上它的節(jié)奏。

          所以大家一定要注意了,遷移到 Spring Boot 2.4,需要注意文中的配置變更細(xì)節(jié),一定要對(duì)所有變更內(nèi)容做調(diào)整,不然參數(shù)加載會(huì)受到影響。

          本節(jié)所有實(shí)戰(zhàn)源代碼示例已上傳至 Github:

          https://github.com/javastacks/spring-boot-best-practice

          好了,今天的分享就到這里了,單看官方文檔還不是很清楚,棧長(zhǎng)也是對(duì)配置升級(jí)的細(xì)節(jié)做了各個(gè)實(shí)踐才明白其中的奧妙,希望對(duì)大家有幫助。

          歡迎大家 Star 關(guān)注,后續(xù)會(huì)不斷更新。

          學(xué)習(xí)更多 Spring Boot 教程,請(qǐng)關(guān)注公眾號(hào)Java技術(shù)棧,后面棧長(zhǎng)還會(huì)繼續(xù)推送一些 Spring Boot 2.4 新特性實(shí)戰(zhàn)文章。在公眾號(hào)后臺(tái)回復(fù):boot,歷史 Spring Boot 教程我也都整理好了。

          最后,別忘了點(diǎn)在看、轉(zhuǎn)發(fā)哦,需要你的鼓勵(lì)~

                  
          — 【 THE END 】—
          本公眾號(hào)全部博文已整理成一個(gè)目錄,請(qǐng)?jiān)诠娞?hào)里回復(fù)「m」獲取!


          3T技術(shù)資源大放送!包括但不限于:Java、C/C++,Linux,Python,大數(shù)據(jù),人工智能等等。在公眾號(hào)內(nèi)回復(fù)「1024」,即可免費(fèi)獲取!!




          瀏覽 51
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  嫩草视频91麻豆黑人 | 久久国产激情视频 | 美女人人cao | av又黄又爆力 | 免费二手毛片 |