Spring Boot 2.4 正式發布,重大調整!!!

2021-02-07 imooc編程手記

昨天又有粉絲留言說 Spring Boot 2.4.0 已經發布了:

我了個去,棧長趕緊跑到 Spring Boot 官網看了下,果然 2.4.0 了,我頓時傻眼了,又得寫文章了,看來我消息還是稍微有點滯後了…

Spring Boot 2.4.0 這麼快就發布了,又是周末來給大家推送,我印象中都是周末推……

Spring Boot 更新也太快了,很多同學表示學不來了,學不動了。學不動也要學啊,不然就要被淘汰了,Java技術棧所有 Spring Boot 教程和示例源碼都上傳到 Github 了,歡迎 Star:

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

好吧,還是例行公事,接下來棧長帶大家來解讀下 Spring Boot 2.4.0 到底更新了什麼鬼?

切記!!!

這個版本不要輕易升級!!!

下面注意仔細看完哦。。。

一、支持 Java 15

Spring Boot 2.4.0 支持 Java 15 了,同時向下兼容 Java 11 和 Java 8。

二、依賴升級

Spring Boot 2.4.0 升級了一些主要的 Spring 項目:

另外,還儘可能升級了一些第三方庫到最新穩定版本:

三、配置改進1、改進配置文件的處理方式

Spring Boot 2.4 改進了處理 application.properties 和 application.yml 配置文件的方式。更新後的邏輯旨在簡化和合理化外部配置的加載方式,但有些參數的組合形式卻得到了限制,升級請謹慎。

如果你的應用工程只有一個簡單的 application.properties 或 application.yml 文件,則可以進行無縫升級到 Spring Boot 2.4.0。

但是,如果你的配置較為複雜,比如說有指定 profile 的參數,或者有基於 profile 激活的參數,要使用新功能就需要進行一些更改。

更多細節可參考:

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

如果你想繼續使用 Spring Boot 2.3 的配置邏輯,也可以通過在 application.properties 或者 application.yml 配置文件中添加以下參數:

spring.config.use-legacy-processing = true

2、導入配置參數改進

通過配置參數 spring.config.location 和 spring.config.import 來指定或者導入配置文件時,如果配置文件不存在,現在不是只能默默地失敗了,可以通過添加 optional: 前綴來標識它是可選的。

比如我們從 /etc/config/application.properties 指定配置文件,如果這個文件不存在,系統就會跳過它。

spring.config.location=optional:/etc/config/application.properties

如果你想將所有指定的配置文件都默認為可選的,可以通過 SpringApplication.setDefaultProperties(…) 來設置

spring.config.on-location-not-found=ignore 這個參數,或者將它設置在系統環境變量中。

3、支持導入配置樹

新版本的 spring.config.import 屬性還可以用於導入配置樹,通過與 Kubernetes 一起使用,配置樹是提供鍵/值對的另一種方法,每一個鍵值/對都在其自己的文件中聲明,文件名是鍵,文件內容就是值。

另外,從配置樹導入的參數默認會帶一個換行符。

詳細的參考:

https://docs.spring.io/spring-boot/docs/2.4.0/reference/html/spring-boot-features.html#boot-features-external-config-files-configtree

具體的配置上的細節暫時沒有時間詳細研究了,後面有機會再詳細介紹一篇,關注公眾號Java技術棧第一時間推送。

四、新增啟動端點

Spring Boot 2.4.0 添加了一個新的啟動端點,用來顯示應用啟動有關的詳細信息,比如可以幫助我們來診斷啟動時間比預期更長的 Spring Beans。

這個功能建立在 Spring Framwork 5.3 最近添加的應用程式啟動跟蹤特性的基礎上,感興趣的可以在 Spring 框架文檔中閱讀有關該功能的更多信息。

https://docs.spring.io/spring-framework/docs/5.3.x/reference/html/core.html#context-functionality-startup

五、新增起源鏈(Origin Chains)

Origin 接口更新了,使用了全新的 getParent() 方法,這樣就可以提供完整的參數起源鏈,以準確顯示某一項參數的來源。

比如你在 application.properties 配置文件中使用 spring.config.import 來導入第二個配置文件的參數,從第二個配置文件加載的參數的 Origin 將具有一個指向原始導入聲明的父級。

說白了就是可以看到參數從哪裡導進來的,可以通過 actuator/env 或者 actuator/configprops 端點來查看與之相關的輸出信息,這裡暫不詳細研究了,後面有機會再詳細介紹一篇,關注公眾號Java技術棧第一時間推送。

六、Docker 支持升級1、鏡像發布

Spring Boot Maven 插件的 spring-boot:build-image 指令和 Gradle 插件的 bootBuildImage 任務現在可以直接發布 Docker 鏡像到 Docker 註冊中心了。

2、授權機制

當使用 Spring Boot 構建時,可以為構建器或者運行鏡像使用私有授權的 Docker 私有註冊中心,支持用戶名/密碼認證以及基於 Token 機制認證。

更多詳細的配置可以參考對應的插件文檔:

Maven:

https://docs.spring.io/spring-boot/docs/2.4.0/maven-plugin/reference/htmlsingle/#build-image-example-publish

Gradle:

https://docs.spring.io/spring-boot/docs/2.4.0/gradle-plugin/reference/htmlsingle/#build-image-example-publish

七、移除了 JUnit 5’s Vintage 引擎

Spring Boot 2.4.0 從 spring-boot-starter-test 中移除了 JUnit 5  Vintage 引擎,JUnit 5 可以通過 vintage 引擎來運行 JUnit 4 編寫的測試用例,說白了就是兼容 JUnit 4 唄。

如果你不想遷移測試用例到 JUnit 5 而繼續使用 JUnit 4,添加以下 Maven 依賴即可:

<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

以下為對應的 Gradle 配置:

testImplementation("org.junit.vintage:junit-vintage-engine") {
    exclude group: "org.hamcrest", module: "hamcrest-core"
}

八、其他更新

Spring Boot 2.4.0 發布更新說明中還包括了許多其他的更新和改進,比如說在 Spring Boot 2.4.0 中標識了在下個版本中計劃廢棄的不推薦使用的類和方法等。

以上就是 Spring Boot 2.4.0 的主要變更內容,當然還有許多發布細節,感興趣的可以研究下這個更新說明:

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

總結

可以看出 Spring Boot 2.4.0 的變更還是蠻大的,特別是在配置文件、配置參數的處理,還有許多框架的重大版本升級。

切記不要輕易升級到這個版本,如需升級,最好是詳細看清楚變更內容,做好充分測試,以免年終獎沒了。。


相關焦點

  • Spring Boot 2.4.3、2.3.9 版本發布,你準備好了嗎?
    新年上班第一天,Spring Boot 就發布了最新的2.4.3 、
  • Spring Boot 2.3.0 發布 - OSCHINA - 中文開源技術交流社區
    Spring Boot 2.3.0 已經發布,此版本主要更新內容包括:依賴升級新版本核心組件依賴升級
  • Spring Boot與Shiro整合實現用戶認證
    Spring Boot整合Shiro1.2.1. 導入shiro與spring整合依賴修改pom.xml<!>1.4.0</version></dependency>1.2.2.
  • Spring Boot集成validation用於優雅的校驗API參數的合法性
    ,郵箱格式是否正確等等,校驗框架比較多,用的比較多的是hibernate-validator, 也支持國際化,也可以自定義校驗類型的註解,這裡只是簡單的演示校驗框架在Spring Boot中的簡單集成,要想了解更多可以參考 hibernate-validator1. pom.xml<dependency> <groupId>org.springframework.boot
  • Spring Boot 節省95%內存佔用
    Spring Boot 2.4 開始逐步提供對 GraalVM 的支持,旨在提升上文所述的 啟動、內存、響應的使用體驗。/gu install native-image初始化 Spring Boot 2.4 項目Spring Initializr 創建 demo 項目curl https://start.spring.io/starter.zip -d dependencies=web \ -d bootVersion
  • 再見了Netflix,SpringCloud 2020.0.0正式發布
    Spring Cloud早在年初就啟動了該版本的研發工作,並在今年4月份就已經發布了其2020.0.0-M1版本(第一個裡程碑版本),直到離2020年結束不到10天了才「憋出」大招,正式RELEASE。
  • 如何用Spring Boot和Cloud實現微服務
    有關如何使用Spring Cloud來構建Gateway的內容,請訪問https://spring.io/projects/spring-cloud-gateway。如果您想了解更多有關如何使用Spring Cloud,來輕鬆創建Config Server的詳細內容,請參見--https://spring.io/projects/spring-cloud-config。
  • Spring Security(二)--Guides
    作者:老徐原文地址:https://www.cnkirito.moe/2017/09/20/spring-security-2/友情提示:歡迎關注公眾號【芋道源碼】。😈關注後,拉你進【源碼圈】微信群和【老徐】搞基嗨皮。友情提示:歡迎關注公眾號【芋道源碼】。
  • springboot+springsecurity實現前後端分離簡單實現!
    1.2、技術支持jdk 1.8、springboot 2.3.4、mybatis-plus 3.4.1、mysql 5.5、springsecurity 5.3.4、springmvc、lombok簡化entity代碼,不用你去寫get、set方法,全部自動生成、gson 2.8.2 將json對象轉化成json字符串
  • 學習學習SpringSecurity
    初階 Spring Security添加maven依賴<dependency><groupId>org.springframework.boot</groupId>><artifactId>spring-boot-starter-security</artifactId></dependency>重新部署,會看到一個登陸頁面。
  • yue-library 2.3.0 發布,替換 Db JavaBean 轉換方案,性能提升約...
    2.3.0【2021-01-11】Maven 倉庫實際發布版本號j8.2.3.0、j11.2.3.0解釋:j8 對應 Java 8,詳情查看版本區別說明關鍵依賴版本定義: 依賴 版本 spring-boot 2.3.5.RELEASE spring-cloud Hoxton.SR9
  • Spring 官方周報-2017/11/22
    1:  Spring Cloud 聯合創始人兼負責人 Spencer Gibb 剛剛發布了 Spring Cloud Finchley M4 版本。這個新版本更新支持 Spring Boot 2.0.0.M6 。與往常一樣,這是一個裡程碑式的發布版,希望您能嘗試一下。
  • 2020年Spring Cloud最後一個大版本發布!
    2020年12月22日,Spring Cloud 2020.0 正式發布
  • MyBatis JPA Extra,MyBatis JPA 擴展 v2.2 發布
    的注釋簡化對單表CUID操作,根據JPA注釋動態生成SQL語句;使用Interceptor實現資料庫SELECT分頁查詢,適配多種資料庫;另外提供mybatis-jpa-extra-spring-boot-starter簡化SpringBoot集成。
  • Spring boot 按需啟用組件Bean
    例如,在以下配置中,如果環境中存在spring.example.values,則條件匹配,但如果存在spring.example.values [0],則條件不匹配。@ConditionalOnProperty(prefix = "spring", name = "example.values") class ExampleAutoConfiguration { } 上面的例子 ,你最好換一下,換成自己的變量命名。
  • springcloud的微服務開發日記之五(zuul路由轉發)
    2018年的日程安排如下:記錄springcloud開發微服務的全過程記錄vue實現的知識圖譜服務記錄中醫理論在知識圖譜上的應用每天一個小目標,做比昨天更好的自己博客地址 i.drai.top有興趣的可以關注一下,共同進步另:關注後可點擊頭條號的「源碼」連結,有空閒時間我會不定期的上傳源碼以供參考
  • Spring boot + Spring Security實現權限管理
    基於Spring boot + Spring Security實現第一版傳統架構本文是實訓邦的權限管理SpringSecurity+JWT的一個講義,分享給粉絲學習。2.填寫Group,Artifact,Packing選擇Jar ,點擊Next。
  • spring不僅是春天,還有這幾種意思與用法,你一定要掌握!
    3.spring (v) 跳;躍例:He sprang to his feet, grabbing his keys off the coffee table.他一躍而起,從茶几上一把抓起自己的鑰匙。4.spring (v) 突然活躍起來;突然提出;使彈開例1:My uncle sprang a new idea on him.
  • 最新版本 Flowable Modeler 6.4.1 流程編輯器破解
    2resource/static 為流程編輯器的靜態代碼啟動準備工作提供一個 MYSQL 5.7+ 的環境,並在 application.yaml 中配置到對應的資料庫地址因為是 Spring Boot 工程,所以直接從啟動類啟動即可
  • zuihou-admin-cloud 1.8 發布,支持 Cloud Alibaba 2.2.0
    升級 Alibaba Cloud 2.2.0.RELEASE2. 修復 數據自動注入器 注入遠程調用的數據類型擦除的bug3. 新增 ribbon自定義負載均衡規則 實現簡單的灰度發布4. 完善父類控制器:BaseController2,新增模板方法:CRUD、導入、導出、預覽、分頁(排序) 5.