<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 3.0做準(zhǔn)備了

          共 3064字,需瀏覽 7分鐘

           ·

          2022-06-12 11:09

          點擊關(guān)注公眾號,Java干貨及時送達

          2018年2月28日Spring Boot進入2.0時代,距今已經(jīng)超過4年了。2022 年11月Spring Boot 3.0將正式發(fā)布,它將基于Spring Framework 6.0,并且需要 Java 17 或更高版本,同時它也將是Jakarta EE 9的第一個Spring Boot版本。還有六個月的時間留給開發(fā)者來過渡到Spring Boot 3.0,今天胖哥將告訴你一些方法,以便于將來快速遷移到3.0。

          Java 17

          Java 17將是繼Java 8以來最重要的LTS版本,是Java社區(qū)八年努力的成果。包含了很多重要的改進,Java 17也是目前性能最強的LTS版本。目前所有的Spring Boot 2.x 版本都能很好地適配Java 17,你可以無需等待,先著手JDK的升級調(diào)試,并嘗試一些新的特性和API。

          盡快升級到Spring Boot 2.7

          前幾日胖哥已經(jīng)講了Spring Boot 2.7基本已經(jīng)是Spring Boot 2.x最后一個大版本了,Spring Boot 2.5已經(jīng)停止OSS支持,不再進行維護,Spring Boot 2.6也將在Spring Boot 3.0發(fā)布后停止維護,迭代的速度越來越快了。盡早升級到2.7才能更好遷移到3.0,這里胖哥建議不要跳版本升級,比如不要直接從2.4跳到2.7,盡量按照2.4、2.5、2.6、2.7這樣的步驟升級,跨度太大反而不利于平滑升級。

          移除過時代碼

          每個Spring Boot版本都會或多或少有一些被標(biāo)記為@Deprecated的代碼,Spring Boot 3.0 將完全移除在 2.x 過時的代碼,當(dāng)然2.x早期的過時代碼也可能在最新的2.x被移除。盡量不要使用過時代碼,一般過時代碼上都注釋有過時的原因或者替代的API。

          配置文件機制的更改

          在Spring Boot 2.4中,配置文件?application.properties?和?application.yaml?的加載機制被改變,目的是為了簡化外部配置的加載方式,使之更加合理,帶來的是不向下兼容。為了平滑升級,Spring 提供了一個配置項來兼容舊機制:

          spring:
          ??config:
          ????use-legacy-processing:?true

          而這個機制將在3.0時移除,我們必須使用符合新機制的配置方式,如果你存在這幾種方式就需要注意了。

          多文檔Yaml

          如果你在yaml配置文件中使用了間隔符---來聲明多文檔的話,你得知道現(xiàn)在按文檔聲明的順序來注冊聲明的配置屬性;而在 Spring Boot 2.3 及更早版本中,基于配置文件激活順序。舉個例子:

          ---
          spring:
          ??profiles:?
          ????active:?dev
          ??application:
          ????name:?dev-app
          server:
          ??port:?8081??????
          ---
          spring:
          ??profiles:
          ????active:?prod
          ??application:
          ????name:?prod-app
          server:
          ??port:?8080?????

          這個配置文件在Spring Boot 2.3以及更早的版本中會根據(jù)spring.profiles.active來決定加載的環(huán)境。但是從2.4開始后面的屬性會覆蓋前面的屬性。

          外部配置總是覆蓋jar內(nèi)的配置

          如果你的配置文件在jar之外,并且該配置文件適用于特定的環(huán)境,例如application-dev.yaml。2.4以下的版本中,在jar外面的application.yaml不會覆蓋jar中的application-.yaml文件,從2.4開始外部文件將總是覆蓋jar內(nèi)的配置文件。你需要檢查你是否存在這種情況。

          激活配置文件

          如果您使用spring.profiles屬性來激活環(huán)境配置,那么現(xiàn)在就應(yīng)該遷移到spring.config.activate.on-profile

          舊玩法:

          spring:
          ??profiles:?"prod"
          secret:?"production-password"

          新玩法:

          spring:
          ??config:
          ????activate:
          ??????on-profile:?"prod"
          secret:?"production-password"

          這真是折騰人啊。spring.profiles.active仍然可以用來激活特定的環(huán)境,例如命令行:

          $?java?-jar?myapp.jar?--spring.profiles.active=prod

          你也可以在?application.properties?或?application.yaml?中使用spring.profiles.active,從2.4開始spring.profiles.active不能在特定環(huán)境中使用,也就是說application-.yaml中不能使用,---間隔的多文檔中也不能使用它。一句話,你不能再通過spring.profiles.active來合并一個包含了spring.config.activate.on-profile屬性的配置文件。

          同樣的機制,?spring.profiles.include屬性只能在非特定配置文件中使用,下面的配置是無效的:

          #?無效配置
          spring:
          ??config:
          ????activate:
          ??????on-profile:?"prod"
          ??profiles:
          ????include:?"metrics"

          更多的要點請參考官方配置文件Spring boot配置遷移指南[1]。

          性能更高的路徑解析方式

          從Spring Boot 2.6 開始,路徑解析默認使用PathPatternParser,取代了之前的Ant風(fēng)格匹配AntPathMatcher,升級時很多人的Swagger出問題了,通過spring.mvc.pathmatch.matching-strategy解決了這個問題。雖然在Spring Boot 3.0中AntPathMatcher會繼續(xù)生效,但是PathPatternParser成為官方推薦,因為它的性能更高,稍后我也將出一篇專題來分析PathPatternParser。

          兼容問題

          首先是Jakarta EE 9的兼容問題,確保你的第三方依賴庫和你的代碼都兼容Jakarta EE 9。另外也要檢查Spring框架正在使用的第三方依賴jar是否有計劃兼容Spring 6。

          嘗試去學(xué)習(xí)Spring 6

          Spring 6以及Spring Boot 3已經(jīng)發(fā)布了多個里程碑,在閑暇時間可以抽出一些時間去嘗試一下,體驗新的特性和變化,評估你應(yīng)用升級的難度。

          參考資料

          Spring boot配置遷移指南: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Config-Data-Migration-Guide

          ????

          1、拖動文件就能觸發(fā)7-Zip安全漏洞,波及所有版本

          2、進程切換的本質(zhì)是什么?

          3、一次 SQL 查詢優(yōu)化原理分析:900W+ 數(shù)據(jù),從 17s 到 300ms

          4、Redis數(shù)據(jù)結(jié)構(gòu)為什么既省內(nèi)存又高效?

          5、IntelliJ IDEA快捷鍵大全 + 動圖演示

          6、全球第三瀏覽器,封殺中國用戶這種操作!(文末送書)

          瀏覽 53
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  AV天堂资源成人 | 大大鸡吧轻轻操在线视频 | 特级一级黄色片免费看 | 亚洲视频第一页 | 免费无码婬片A片AAA毛多多 |