Spring 官宣釋出 Spring Boot 3.0 第一個里程碑 M1,從 Java 8 提升到 Java 17!

yoodb發表於2022-01-22

Spring官方於2022年1月20日釋出Spring Boot 3.0.0-M1版本,預示開啟了Spring Boot 3.0的里程碑,相信這是通往下一代Spring框架的激動人心的旅程。

1642773236(1).jpg

接下來一起來看看Spring Boot 3.0.0-M1 版本都有哪些重大變化。

Spring Boot 2.x 棄用Spring Boot 2.x中不推薦使用的類、方法和屬性已在Spring Boot 3.0.0-M1版本中刪除,注意在升級之前有沒有呼叫過時的方法。最低要求變更Java基線從Java 8提升到Java 17。Spring Boot 3.0需要Java 17和Spring Framework 6作為最低版本。使用Gradle構建的應用程式需要Gradle 7.3或更高版本。目前已刪除對Jersey的支援,因為它尚不支援Spring Framework 6。升級到Jakarta EE 9Spring Boot 3.0開始,如果使用Spring Boot 3.0的現有應用程式,需要注意Java EE API已遷移到其他等效的Jakarta EE上。對於大多數的開發人員來說,這將意味著需要將任何javax匯入替換為jakarta,例如javax.servlet.Filter將替換為jakarta.servlet.Filter。但是還有一些依賴Java EE API的第三方庫,目前還沒有得到很好的支援,所以在Spring Boot 3.0中暫時會移除這類元件的支援。

由於並不是所有Spring Boot 2.x功能都可用於第一個里程碑。Spring官方計劃等第三方庫釋出jakarta相容庫之後重新引入功能。Spring Boot依賴於Jakarta EE規範的地方,Spring Boot 3.0已升級到Jakarta EE 9中包含的版本。例如,Spring Boot 3.0使用Servlet 5.0和JPA 3.0規範。為了區分支援Jakarta EE 8的模組和支援Jakarta EE 9的模組,一些專案釋出了具有不同字尾ID的Jakarta EE 9相容模組。例如,Undertow使用-jakartaee9字尾,而Hibernate使用-jakarta。一般來說,Spring Boot的啟動模組會自動處理這種更改。

如果是直接宣告對第三方模組的依賴項,則可能需要更新依賴項宣告以適應使用與EE 9相容的字尾ID。

作為此次升級到Jakarta EE 9的一部分,在無法獲得第三方庫的支援情況下,已經減少或刪除了對某些依賴項的支援。但是隨著生態系統逐漸適應Jakarta EE 9中的新包名稱,Spring 官方會重新引入支援。另外,推薦下 Spring boot 的實戰開源專案:https://gitee.com/yoodb/jing-xuan。

目前已刪除對以下內容的支援:

EhCache 3
H2’s web console
Hibernate’s metrics
Infinispan
Jolokia
Pooled JMS
REST Assured

  

部分支援刪除Spring Boot 3.0 中刪除了對以下依賴項的支援:

Apache ActiveMQ
Atomikos
EhCache 2
Hazelcast 3
JSON-B

  

還刪除Apache Johnzon的依賴管理,取而代之的是Eclipse Yasson。注意的是Apache Johnzon的Jakarta EE 9相容版本可以與Spring Boot 3一起使用,但是必須在依賴項宣告中指定一個版本。Spring Boot 3.0.0-M1遷移到Spring專案的依賴版本:

Micrometer 2.0.0-M1
Spring AMQP 3.0.0-M1
Spring Batch 5.0.0-M1
Spring Data 2022.0.0-M1
Spring Framework 6.0.0-M2
Spring Integration 6.0.0-M1
Spring HATEOAS 2.0.0-M1
Spring Kafka 3.0.0-M1
Spring LDAP 3.0.0-M1
Spring REST Docs 3.0.0-M1
Spring Security 6.0.0-M1
Spring Session 2022.0.0-M1
Spring Web Services 4.0.0-M1

  

許多第三方依賴項也已更新,其中一些值得注意的是:

Artemis 2.20.0
Hazelcast 5.0
Hibernate Validator 7.0
Jakarta Activation 2.0
Jakarta Annotation 2.0
Jakarta JMS 3.0
Jakarta JSON 2.0
Jakarta JSON Bind 3.0
Jakarta Mail 2.0
Jakarta Persistence 3.0
Jakarta Servlet 5.0
Jakarta Servlet JSP JSTL 2.0
Jakarta Transaction 2.0
Jakarta Validation 3.0
Jakarta WebSocket 2.0
Jakarta WS RS 3.0
Jakarta XML Bind 3.0
Jakarta XML Soap 2.0
Jetty 11
jOOQ 3.16
Tomcat 10

  

除了上面列出的更改之外,還有一些小的調整和改進,包括:1. 對Java的SecurityManager支援,在JDK中被棄用後,Spring Boot 3.0.0-M1中已被刪除;2. 對Spring Framework的CommonsMultipartResolver的支援,在Spring Framework 6中刪除後,Spring Boot 3.0.0-M1中也已經被刪除。Spring官方訊息,計劃每兩個月釋出一個新的Spring Boot 3.0里程碑,在今年3月24日釋出Spring Boot 3.0.0-M2,計劃在11月下旬釋出GA版本。如果感興趣或者想嘗試這個新版本的朋友,可以從start.spring.io生成一個專案,注意選擇Java 17。有什麼想說的歡迎下方留言!!

相關文章