<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 正式發(fā)布,這份升級(jí)指南必須收藏

          共 5388字,需瀏覽 11分鐘

           ·

          2022-11-28 00:34

          Spring Boot 3.0 現(xiàn)已正式發(fā)布,它包含了 12 個(gè)月以來(lái) 151 個(gè)開(kāi)發(fā)者的 5700 多次代碼提交。這是自 4.5 年前發(fā)布 2.0 以來(lái),Spring Boot 的第一次重大修訂。

          它也是第一個(gè)支持 Spring Framework 6.0 和 GraalVM 的 Spring Boot GA 版本,同時(shí)也是第一個(gè)基于Java 17的Spring Boot版本,以Jakarta EE 9為基準(zhǔn)并支持Jakarta EE 10。同時(shí)借助于GraalVM支持了AOT和Native Image。

          3.0升級(jí)指南

          如果你想嘗試Spring Boot 3.0,不妨參考胖哥精心準(zhǔn)備的升級(jí)指南。

          升級(jí)JDK

          首先要升級(jí)你的JDK到JDK17,如果你要使用Native Image特性,要使用GraalVM 22.3以上和 Native Build Tools Plugin 0.9.17 或更高的版本。

          平滑升級(jí)

          這里不建議直接從低于Spring Boot 2.7的版本直接升級(jí)到Spring Boot 3.0。不然新特性和API變更太多,就需要你修改大量的配置,升級(jí)路徑會(huì)過(guò)于陡峭。建議通過(guò)小版本號(hào)分階段升級(jí)到2.4、2.6、2.7,最后再到3.0。

          依賴(lài)評(píng)估

          Spring Boot3.0下依賴(lài)組件的版本要求也不盡相同,比如Spring Boot Kafka Starter可能對(duì)Kafka有什么要求,這要求你進(jìn)行充分評(píng)估。Spring Cloud體系應(yīng)該在對(duì)應(yīng)的Spring Boot 3.0體系發(fā)布后進(jìn)行升級(jí)。

          升級(jí)到Spring Boot 3

          一旦上面的工作準(zhǔn)備完畢,你就可以開(kāi)始嘗試升級(jí)到Spring Boot 3.0了。

          配置屬性兼容

          在Spring Boot 3.0中,一些配置屬性被重新命名/刪除了,開(kāi)發(fā)人員需要相應(yīng)地更新他們的 application.properties 或者 application.yml 。為了幫助你做到這一點(diǎn),Spring Boot 3.0提供了一個(gè) spring-boot-properties-migrator 模塊。一旦作為依賴(lài)關(guān)系添加到你的項(xiàng)目中,它不僅會(huì)在啟動(dòng)時(shí)分析你的應(yīng)用程序的環(huán)境并打印診斷結(jié)果,而且還會(huì)在運(yùn)行時(shí)為你臨時(shí)遷移屬性。把下面這個(gè)加入 pom.xml 以幫助你升級(jí)兼容配置屬性:

              
                <dependency>
          ?<groupId>org.springframework.boot</groupId>
          ?<artifactId>spring-boot-properties-migrator</artifactId>
          ?<scope>runtime</scope>
          </dependency>
          ?

          完成遷移之后,務(wù)必要移除 spring-boot-properties-migrator 依賴(lài)。

          Jakarta EE

          由于Java EE已經(jīng)變更為Jakarta EE,包名以? javax 開(kāi)頭的需要相應(yīng)地變更為 jakarta 。這里建議通過(guò)Intellij IDEA 2021.2提供的內(nèi)置功能批量處理即可:

          ebf8de349df5072cae7d2515f4e12d27.webp


          ?

          當(dāng)然你也可以手動(dòng)去變更包名。

          升級(jí)的關(guān)鍵變更

          Spring Boot 3.0有一些關(guān)鍵改變,這些改變將與大多數(shù)應(yīng)用程序有關(guān)。所以開(kāi)發(fā)者要仔細(xì)閱讀這些變更。

          圖片Banner不再支持

          現(xiàn)在Spring Boot 3.0自定義Banner只支持文本類(lèi)型( banner.txt ),不再支持圖片類(lèi)型。

          日志日期格式變更

          Logback和Log4j2的日志消息的日期和時(shí)間部分的默認(rèn)格式已經(jīng)改變,以符合ISO-8601標(biāo)準(zhǔn)。新的默認(rèn)格式 yyyy-MM-dd'T'HH:mm:ss.SSSXXX 使用 T 來(lái)分隔日期和時(shí)間,而不是空格字符,并在最后添加時(shí)區(qū)偏移。 LOG_DATEFORMAT_PATTERN 環(huán)境變量或 logging.pattern.dateformat 屬性可以用來(lái)恢復(fù)以前的默認(rèn)值 yyyy-MM-dd HH:mm:ss.SSS

          ConstructingBinding注解

          配置屬性類(lèi)注解 @ConfigurationProperties 默認(rèn)情況下不再需要使用 @ConstructorBinding 來(lái)標(biāo)記構(gòu)造,你應(yīng)該從配置類(lèi)上移除它,除非該配置類(lèi)多個(gè)構(gòu)造函數(shù)來(lái)明確配置屬性綁定。

          YamlJsonParser被移除

          因?yàn)?/span> SnakeYAML JSON 解析與其他解析器的實(shí)現(xiàn)不一致。如果你直接使用 YamlJsonParser ,請(qǐng)遷移到其他 JsonParser 實(shí)現(xiàn)中。

          自動(dòng)配置文件變更

          Spring Boot 2.7引入了一個(gè)新的文件:

              
                META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

          用于注冊(cè)自動(dòng)配置,同時(shí)保持與? spring.factories ?中注冊(cè)的向后兼容。Spring Boot 3.0發(fā)布后, spring.factories 已經(jīng)被移除,只能通過(guò) imports 文件來(lái)注冊(cè)自動(dòng)配置。

          Web應(yīng)用變更
          路徑匹配

          現(xiàn)在Spring MVC和Spring Webflux 的路徑匹配規(guī)則已經(jīng)做了調(diào)整,默認(rèn)情況下尾部斜杠 / 的匹配機(jī)制將和以前不同:

          • 3.0以前 /foo/bar 等同于 /foo/bar/
          • 3.0以后 /foo/bar 不同 /foo/bar/
          棄用配置 server.max-http-header-size

          server.max-http-header-size 已經(jīng)被棄用,現(xiàn)在用 server.max-http-request-header-size 替代 ,并且現(xiàn)在該屬性只能來(lái)配置請(qǐng)求頭的大小,不再限制某些Web容器的響應(yīng)頭大小,如果需要限制響應(yīng)頭大小請(qǐng)通過(guò)自定義 WebServerFactoryCustomizer 來(lái)實(shí)現(xiàn)。

          優(yōu)雅停機(jī)階段變更

          優(yōu)雅停機(jī)由 SmartLifecycle 實(shí)現(xiàn),在 SmartLifecycle.DEFAULT_PHASE - 2048 階段開(kāi)始,Web服務(wù)器在 SmartLifecycle.DEFAULT_PHASE - 1024 階段停止。任何參與優(yōu)雅關(guān)機(jī)的SmartLifecycle實(shí)現(xiàn)都應(yīng)該被相應(yīng)地更新。

          Jetty

          由于Jetty目前還不支持Servlet 6.0,使用Jetty的開(kāi)發(fā)者需要通過(guò)降低Jakarta Servlet的版本為5.0。

          數(shù)據(jù)訪問(wèn)相關(guān)的變更

          spring.data 前綴已被保留給Spring Data項(xiàng)目,如果你使用了Spring Data項(xiàng)目的子項(xiàng)目, application.yaml 中相關(guān)的配置屬性就需要響應(yīng)的變更。例如? spring.redis 現(xiàn)在需要修改為 spring.data.redis

          數(shù)據(jù)訪問(wèn)相關(guān)的組件現(xiàn)在都使用了比較新的版本:

          • Flyway更新到?9.0
          • Hibernate?更新到?6.1
          • R2DBC?更新到?1.0
          Mongodb

          另外 Flapdoodle 嵌入式 MongoDB 的自動(dòng)配置被移除,開(kāi)發(fā)者有需要的話需要自行引入。

          Elasticsearch

          Elasticsearch的Rest客戶端采用了新的API實(shí)現(xiàn),舊的自動(dòng)配置和Spring Data Elasticsearch中舊的客戶端API已經(jīng)被移除。

          Spring Security

          相關(guān)的變更,胖哥稍后會(huì)整理并獨(dú)立分享。

          其它變更

          可觀測(cè)性、度量跟蹤、Maven、Gradle也都有不同程度的變更,有需要可以查看官方的Spring-Boot-3.0-Migration-Guide 。

          記得收藏這一篇,后續(xù)胖哥會(huì)深入Spring 6.0和Spring Boot 3.0的細(xì)節(jié)部分。

          ------ 我們創(chuàng)建了一個(gè)高質(zhì)量的技術(shù)交流群,與優(yōu)秀的人在一起,自己也會(huì)優(yōu)秀起來(lái),趕緊點(diǎn)擊加群,享受一起成長(zhǎng)的快樂(lè)。另外,如果你最近想跳槽的話,年前我花了2周時(shí)間收集了一波大廠面經(jīng),節(jié)后準(zhǔn)備跳槽的可以點(diǎn)擊這里領(lǐng)取

          推薦閱讀

          ··································

          你好,我是程序猿DD,10年開(kāi)發(fā)老司機(jī)、阿里云MVP、騰訊云TVP、出過(guò)書(shū)創(chuàng)過(guò)業(yè)、國(guó)企4年互聯(lián)網(wǎng)6年 從普通開(kāi)發(fā)到架構(gòu)師、再到合伙人。一路過(guò)來(lái),給我最深的感受就是一定要不斷學(xué)習(xí)并關(guān)注前沿。只要你能堅(jiān)持下來(lái),多思考、少抱怨、勤動(dòng)手,就很容易實(shí)現(xiàn)彎道超車(chē)! 所以,不要問(wèn)我現(xiàn)在干什么是否來(lái)得及。如果你看好一個(gè)事情,一定是堅(jiān)持了才能看到希望,而不是看到希望才去堅(jiān)持。相信我,只要堅(jiān)持下來(lái),你一定比現(xiàn)在更好! 如果你還沒(méi)什么方向,可以先關(guān)注我, 這里會(huì)經(jīng)常分享一些前沿資訊,幫你積累彎道超車(chē)的資本。

          點(diǎn)擊領(lǐng)取2022最新10000T學(xué)習(xí)資料
          瀏覽 67
          點(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>
                  激情综合网激情五月天 | 欧美性爱免费在线视频 | 国产又嫩又爽又多水 | 欧美三级午夜理伦三级18禁 | 在线观看成人毛片 |