<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.6 正式發(fā)布,一大波新特性,看完我徹底躺平了。。

          共 5579字,需瀏覽 12分鐘

           ·

          2021-11-26 21:26

          點(diǎn)擊關(guān)注公眾號,Java干貨及時(shí)送達(dá)

          Spring Boot 2.6.0 來了

          太猛了!Spring Boot 2.5.6 發(fā)布不到一個(gè)月,Spring Boot 又接連發(fā)布了三個(gè)版本:

          • Spring Boot 2.6.0(最新)
          • Spring Boot 2.5.7
          • Spring Boot 2.4.13

          后面兩個(gè)版本都是修復(fù) bug 版本,2.6.0 才是硬菜。。


          先給大家奉上幾個(gè)版本的 Maven 依賴:

          Spring Boot 2.6.0:


          ??org.springframework.boot
          ??spring-boot-starter-parent
          ??2.6.0
          ??<type>pomtype>

          Spring Boot 2.5.7:


          ??org.springframework.boot
          ??spring-boot-starter-parent
          ??2.5.7
          ??<type>pomtype>

          Spring Boot 2.4.13:


          ??org.springframework.boot
          ??spring-boot-starter-parent
          ??2.4.13
          ??<type>pomtype>

          需要注意的是,2.4.x 版本開始版本號不帶 .RELEASE 后綴了!


          棧長之前整理了 Spring Boot 的最新版本情況:

          版本發(fā)布時(shí)間停止維護(hù)時(shí)間
          2.7.02022/05-
          2.6.02021/12/18-
          2.5.x2021/05/202023/02/20
          2.4.x2020/12/122022/08/12
          2.3.x2020/05/152022/02/15
          2.2.x2019/10已停止維護(hù)
          2.1.x2018/10已停止維護(hù)
          2.0.x2018/03已停止維護(hù)
          1.5.x2017/01已停止維護(hù)

          可以看到,Spring Boot 2.6.0 本計(jì)劃在今年 12 月發(fā)布的,沒想到居然提前一個(gè)月發(fā)布了,還挺突然的。。

          廢話少說,重點(diǎn)來看下 Spring Boot 2.6.0 都更新了什么鬼?

          Spring Boot 2.6.0 新特性

          1、默認(rèn)禁止循環(huán)引用

          我們都知道,如果兩個(gè) Bean 互相注入對方就會(huì)存在循環(huán)引用問題,如下代碼所示:

          UserService:

          /**
          ?*?作者:棧長
          ?*?來源微信公眾號:Java技術(shù)棧
          ?*/
          @Service
          public?class?UserService?{

          ????@Autowired
          ????LogService?logService;

          }

          LogService:

          /**
          ?*?作者:棧長
          ?*?來源微信公眾號:Java技術(shù)棧
          ?*/
          @Service
          public?class?LogService?{

          ????@Autowired
          ????UserService?userService;

          }

          這兩個(gè) Bean 互相引用對方,就是循環(huán)引用了。

          現(xiàn)在,2.6.0 這個(gè)版本已經(jīng)默認(rèn)禁止 Bean 之間的循環(huán)引用,如果存在循環(huán)引用就會(huì)啟動(dòng)失敗報(bào)錯(cuò):

          解決方案:

          1)整改業(yè)務(wù),清理掉所有存在循環(huán)引用的 Bean;

          2)設(shè)置允許循環(huán)引用:

          spring:
          ??main:
          ????allow-circular-references:?true

          也可以通過 SpringApplication 和 SpringApplicationBuilder 設(shè)置 ,如:

          /**
          ?*?作者:棧長
          ?*?來源微信公眾號:Java技術(shù)棧
          ?*/
          public?static?void?main(String[]?args)?{
          ????SpringApplication?application?=?new?SpringApplication(Application.class);

          ????//?允許循環(huán)引用
          ????application.setAllowCircularReferences(true);
          ????application.run(args);
          }

          2、支持 Cookie SameSite 屬性

          現(xiàn)在可以使用 server.session.cookie.same-site 屬性在 servlet 應(yīng)用程序的會(huì)話 cookie 上配置 SameSite 屬性,這個(gè)適用于自動(dòng)配置的 Tomcat、Jetty 和 Undertow 應(yīng)用服務(wù)器,自定義的尚不可知。

          server.session.cookie.same-site 支持的三個(gè)配置:

          SameSite 參考值說明:

          • None(關(guān)閉模式,必須同時(shí)設(shè)置 Secure)
          • Lax(寬松模式,允許部分第三方 Cookie,如:Get 表單請求、鏈接跳轉(zhuǎn)等)
          • Strict(嚴(yán)格模式,完全禁止第三方 Cookie,URL 一致時(shí)才發(fā)送 Cookie)

          SameSite 掃盲:

          SameSite 是瀏覽器針對 Cookie 新增的屬性,主要用來限制第三方 Cookie,以防止 CSRF 攻擊。

          如 Google 搜索的響應(yīng)頭:

          另外,如果你想將 SameSite 屬性應(yīng)用于其他 cookie,可以使用 CookieSameSiteSupplier 接口。

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

          https://docs.spring.io/spring-boot/docs/2.6.0/reference/html//web.html#web.servlet.embedded-container.customizing.samesite

          3、響應(yīng)式應(yīng)用服務(wù)器會(huì)話屬性

          響應(yīng)式應(yīng)用服務(wù)器支持的會(huì)話屬性已在此版本中擴(kuò)展。

          以前是在 spring.webflux.session 下,現(xiàn)在在 server.reactive.session 下,并且提供與 servlet 版本相同的屬性。

          4、支持自定義脫敏規(guī)則

          Spring Boot 現(xiàn)在可以清理 /env/configprops 端點(diǎn)中存在的敏感值。

          另外,還可以通過添加類型為 SanitizingFunction 的 @Bean 類來配置自定義清理規(guī)則。這個(gè)感覺挺重要的,不能在端點(diǎn)中顯示敏感信息的,后面棧長研究下再分享,關(guān)注公眾號 Java技術(shù)棧,第一時(shí)間推送。

          5、重要端點(diǎn)變更

          環(huán)境變量 /env 端點(diǎn)已經(jīng)默認(rèn)不開放了,可以通過以下配置開啟:

          management.info.env.enabled?=?true

          另外,Spring Boot 下的 /info 端點(diǎn)現(xiàn)在可以公開 Java 運(yùn)行時(shí)信息了,如以下示例 java 節(jié)點(diǎn)所示:

          {
          ??"java":?{
          ????"vendor":?"BellSoft",
          ????"version":?"17",
          ????"runtime":?{
          ??????"name":?"OpenJDK?Runtime?Environment",
          ??????"version":?"17+35-LTS"
          ????},
          ????"jvm":?{
          ??????"name":?"OpenJDK?64-Bit?Server?VM",
          ??????"vendor":?"BellSoft",
          ??????"version":?"17+35-LTS"
          ????}
          ??}
          }

          設(shè)置方法:

          management.info.java.enabled?=?true

          6、構(gòu)建信息屬性排除

          現(xiàn)在可以從 Spring Boot Maven 或 Gradle 插件生成的 build-info.properties 文件中排除特定屬性。

          比如,排除 Maven 的 version 屬性:


          ?
          ??version
          ?


          7、 Redis 連接池

          當(dāng) commons-pool2 在類路徑下時(shí),Redis(包括:Jedis 和 Lettuce)支持自動(dòng)開啟連接池。

          也可以設(shè)置禁用連接池:

          spring.redis.jedis.pool.enabled?=?false

          spring.redis.lettuce.pool.enabled?=?false?

          8、WebTestClient 測試

          現(xiàn)在可以使用 WebTestClient 在 Mock 環(huán)境中測試 WebFlux 應(yīng)用,也可以對實(shí)時(shí)服務(wù)器測試任何 Spring Web 應(yīng)用程序。

          這是一個(gè)什么樣的測試呢?為什么又搞這個(gè)測試?這個(gè)后面棧長有時(shí)間研究下再分享,關(guān)注公眾號 Java技術(shù)棧,第一時(shí)間推送。

          9、支持 Log4j2 復(fù)合配置

          現(xiàn)在支持 Log4j2 的復(fù)合配置,可以通過 logging.log4j2.config.override 參數(shù)來指定覆蓋主日志配置文件的其他日志配置文件。

          10、依賴升級

          官方項(xiàng)目升級到新版本:

          • Spring Security 5.6
          • Spring Data 2021.1
          • Spring HATEOAS 1.4
          • Spring Kafka 2.8
          • Spring AMQP 2.4
          • Spring Session 2021.1.0

          第三方依賴升級到新版本:

          • Apache Kafka 3.0
          • Artemis 2.19
          • Cassandra Driver 4.13
          • Commons DBCP 2.9
          • Commons Pool 2.11
          • Couchbase Client 3.2.2
          • Elasticsearch 7.15
          • Flyway 8.0.5
          • Hibernate 5.6
          • JUnit Jupiter 5.8
          • Jedis 3.7
          • Kafka 3.0
          • Kotlin 1.6
          • Liquibase 4.5
          • Micrometer 1.8
          • Mockito 4.0
          • MongoDB 4.4
          • Postgresql 42.3
          • QueryDSL 5.0
          • SnakeYAML 1.29
          • Thymeleaf Layout Dialect 3.0
          • .....

          11、棄用和刪除項(xiàng)

          1)AbstractDataSourceInitializer 類已被棄用,取而代之的是 DataSourceScriptDatabaseInitializer。另外,AbstractDataSourceInitializer 的子類也已被棄用,取而代之的是新的基于 DataSourceScriptDatabaseInitializer 的類。

          2)SpringPhysicalNamingStrategy 類已被棄用,取而代之的是 Hibernate 5.5 的 CamelCaseToUnderscoresNamingStrategy 類。

          3)AbstractApplicationContextRunner 類中的三個(gè)方法已被棄用,取而代之的是新的基于 RunnerConfiguration 的類。

          4)SpringApplicationRunListener 中的 startedrunning 方法已被棄用,取而代之的是接受 Duration 參數(shù)的新方法:

          參數(shù)是有了,方法里面怎么沒用到?什么鬼。。這可能是為下個(gè)版本徹底移除做伏筆吧!

          5)同第 4)點(diǎn),ApplicationStartedEvent 和 ApplicationReadyEvent 中的構(gòu)造函數(shù)也已被替換為接受 Duration 參數(shù)的版本:

          6)EnvironmentEndpoint.sanitize 被標(biāo)識棄用了。

          7)Oracle 數(shù)據(jù)庫驅(qū)動(dòng)程序的依賴管理已得到簡化,Oracle 驅(qū)動(dòng)包 GroupID com.oracle.ojdbc 需要升級為 com.oracle.database.jdbc,現(xiàn)在已經(jīng)刪除了對前者的依賴管理。

          另外,在 Spring Boot 2.4 版本當(dāng)中標(biāo)識為棄用的類、方法和屬性已在此版本中徹底刪除,這個(gè)升級就要注意了,如果用了應(yīng)該會(huì)出現(xiàn)編譯錯(cuò)誤。

          總結(jié)

          除了上面列出的更改之外,在 Docker 鏡像、健康檢查、指標(biāo)監(jiān)控上都有增強(qiáng)、另外還有許多小的調(diào)整和改進(jìn),這里就不一一介紹了,可以看下官方發(fā)布說明:

          https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.6-Release-Notes

          Spring Boot 2.6.0 變動(dòng)真的還挺多的,看看大家都用到了啥,再考慮升級,如果只是學(xué)習(xí)研究使用,可以隨便升,但如果是生產(chǎn)環(huán)境,請慎重考慮了,個(gè)人建議沒有必要跟最新版本。。

          Spring Boot 現(xiàn)在已經(jīng)成為了實(shí)事上的腳手架框架了,讓學(xué)習(xí)和開發(fā)變得更簡單,同時(shí)也讓我感覺技術(shù)更新實(shí)在太快了啊,所以我們也要不斷保持學(xué)習(xí),不然也會(huì)跟著淘汰。

          如果你還沒用過 Spring Boot,今天我就送你一份 《Spring Boot 學(xué)習(xí)筆記》這個(gè)很全了,包括底層實(shí)現(xiàn)原理及代碼實(shí)戰(zhàn),非常齊全,助你快速打通 Spring Boot 的各個(gè)環(huán)節(jié)。

          往期 Spring Boot 教程及示例源碼整理:

          https://github.com/javastacks/javastack

          最后,你們用的哪個(gè) Spring Boot 版本呢?

          歡迎來投票統(tǒng)計(jì)看下!

          好了,今天的分享就到這里了,后面棧長會(huì)分享更多好玩的 Java 技術(shù)和最新的技術(shù)資訊,關(guān)注公眾號Java技術(shù)棧第一時(shí)間推送,我也將主流 Java 面試題和參考答案都整理好了,在公眾號后臺回復(fù)關(guān)鍵字 "面試" 進(jìn)行刷題。

          最后,覺得我的文章對你用收獲的話,動(dòng)動(dòng)小手,給個(gè)在看、轉(zhuǎn)發(fā),原創(chuàng)不易,棧長需要你的鼓勵(lì)。

          版權(quán)聲明: 本文系公眾號 "Java技術(shù)棧" 原創(chuàng),原創(chuàng)實(shí)屬不易,轉(zhuǎn)載、引用本文內(nèi)容請注明出處,抄襲者一律舉報(bào)+投訴,并保留追究其法律責(zé)任的權(quán)利。





          關(guān)注Java技術(shù)棧看更多干貨



          獲取 Spring Boot 實(shí)戰(zhàn)筆記!
          瀏覽 81
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  天堂中文视频在线观看 | 变态另类成人AV一区二区 | chaopeng超碰永久 | 天堂色综合 | 中日韩无码视频 |