透過本篇文章您可以瞭解到以下內容:
- Spring Boot 3.0介紹
- Spring 6.0 介紹
- 項目遷移
Spring Boot 3.0介紹
距離2014年的4月Spring Boot 1.0.0版本正式發佈已經整整過去8年多的時間了,在這 8年的時間里,Spring Boot 經歷了從最初的1. 0.0版本到Spring boot 2.0版本,再到現如今的Spring Boot 2.7版本, 而且值得注意的是Spring Boot 2.7將是Spring Boot 2. x的最後一個大版本。
而在2022年的1月20日,Spring Boot 3.0.0-M 1 版本進行了發佈,這一發佈也預示著開啟了Spring Boot 3的里程碑。 截至目前已經發佈到了Spring Boot3.0.0-M 4
當談到Spring Boot 3您首先會想到什麼? 是依賴的JAVA的版本? 還是有哪些重大特性的增加? 還是在現有Spring Boot 2的基礎上改變了哪些內容?
接下來就讓我們帶著以上的這些疑問來瞭解下Spring Boot 3。
既然Spring Boot是JAVA微服務開發的首選框架,那麼就不得不談到JAVA版本依賴的問題,相比JAVA8, Spring Boot將強力整合Java 17,並採用全新的Spring 6作為基石。
而對於版本管理方面,Spring Boot 3將預設的版本管理器換成了Gradle,並將其版本提高到了7.3。
對於不推薦使用的代碼,即標註有@Deprecated注解的,這些代碼會在Spring Boot3.0中全部移除。 所以如果有後續升級遷移到Spring Boot3.0的計劃,請不要使用待用@Deprecated標註的代碼。
另一方面,較為重要的突破性變化可能是從Java EE跳到Jakarta EE9,包名稱空間從javax.*到jakarta.*. 。 因此,無論何時直接使用JavaEE中的類,我們都需要調整代碼中的所有導入。 例如import javax.servlet.http.HttpServletRequest; 需要修改為:
import jakarta.servlet.http.HttpServletRequest;
同時對Groovy的版本也提升到了4.0 (Spring Boot 3.0.0-M 2)
再者,Spring Boot 3移除了對一些元件的支持,同時對一些依賴也進行了升級,清單如下:
拿掉了Apache ActiveMQ、Atomikos、EhCache 2、Hazelcast 3。升級了如下依賴
最後Spring Boot 3關於AOT以及native支援的情況,如下圖所示:
Spring 6 介紹
- 對於Java版本依賴的問題,可以看出,Spring 6.0將以Java 17為基線。
- 從Java EE跳到Jakarta EE9,帶來包名的改動。
- 此外,Spring 6引入了Spring Observability,這是一個基於Spring Cloud Sleuth的新專案。 它更多的用於有效的記錄應用程式的數據指標,並透過OpenZipkin或OpenTelemetry等供應商實現數據的展現。
- Spring Boot 3將以Spring 6為基石
如下圖所示:
此外關於Spring 6.0版本release最新的消息可以參考如下連結:
https://github.com/spring-projects/spring-framework/releases
項目遷移
以下是對將現有專案遷移到Spring Boot 3.0的一些提示:
- 如果您有把現有專案遷移到Spring Boot 3.0的的想法,建議您首先將現有Spring Boot的專案盡量遷移到Spring Boot 2.7版本(如果已經是Spring Boot 2.7版本請忽略)。 當Spring Boot 3.0發佈時,將會有基於Spring Boot2.7的遷移指南。
- 檢查不推薦使用的代碼的使用方式和遺留配置檔的處理情況(它將隨新的主要版本一起刪除)
- 遷移到Java17
- 檢查第三方專案是否有Jakarta EE 9相容版本
- 由於Spring Boot 3.0正式版本尚未發佈,我們可以嘗試當前里程碑來測試遷移。
參考連結:
- https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-M1-Release-Notes
- https://www.baeldung.com/spring-boot-3-spring-6-new
- https://github.com/spring-projects/spring-framework/releases
作者簡介
Comments
0 Comments have been added so far