Spring官方于2022年1月20日發(fā)布Spring Boot 3.0.0-M1版本蒂阱,預(yù)示開(kāi)啟了Spring Boot 3.0的里程碑,相信這是通往下一代Spring框架的激動(dòng)人心的旅程狂塘。
接下來(lái)一起來(lái)看看Spring Boot 3.0.0-M1 版本都有哪些重大變化录煤。
Spring Boot 2.x 棄用Spring Boot 2.x中不推薦使用的類(lèi)、方法和屬性已在Spring Boot 3.0.0-M1版本中刪除睹耐,注意在升級(jí)之前有沒(méi)有調(diào)用過(guò)時(shí)的方法辐赞。最低要求變更Java基線(xiàn)從Java 8提升到Java 17。Spring Boot 3.0需要Java 17和Spring Framework 6作為最低版本硝训。使用Gradle構(gòu)建的應(yīng)用程序需要Gradle 7.3或更高版本响委。目前已刪除對(duì)Jersey的支持,因?yàn)樗胁恢С諷pring Framework 6窖梁。升級(jí)到Jakarta EE 9Spring Boot 3.0開(kāi)始赘风,如果使用Spring Boot 3.0的現(xiàn)有應(yīng)用程序,需要注意Java EE API已遷移到其他等效的Jakarta EE上纵刘。對(duì)于大多數(shù)的開(kāi)發(fā)人員來(lái)說(shuō)邀窃,這將意味著需要將任何javax導(dǎo)入替換為jakarta,例如javax.servlet.Filter將替換為jakarta.servlet.Filter假哎。但是還有一些依賴(lài)Java EE API的第三方庫(kù)瞬捕,目前還沒(méi)有得到很好的支持,所以在Spring Boot 3.0中暫時(shí)會(huì)移除這類(lèi)組件的支持舵抹。
由于并不是所有Spring Boot 2.x功能都可用于第一個(gè)里程碑肪虎。Spring官方計(jì)劃等第三方庫(kù)發(fā)布jakarta兼容庫(kù)之后重新引入功能。Spring Boot依賴(lài)于Jakarta EE規(guī)范的地方惧蛹,Spring Boot 3.0已升級(jí)到Jakarta EE 9中包含的版本扇救。例如刑枝,Spring Boot 3.0使用Servlet 5.0和JPA 3.0規(guī)范。為了區(qū)分支持Jakarta EE 8的模塊和支持Jakarta EE 9的模塊迅腔,一些項(xiàng)目發(fā)布了具有不同后綴ID的Jakarta EE 9兼容模塊装畅。例如,Undertow使用-jakartaee9后綴沧烈,而Hibernate使用-jakarta掠兄。一般來(lái)說(shuō),Spring Boot的啟動(dòng)模塊會(huì)自動(dòng)處理這種更改掺出。
如果是直接聲明對(duì)第三方模塊的依賴(lài)項(xiàng)徽千,則可能需要更新依賴(lài)項(xiàng)聲明以適應(yīng)使用與EE 9兼容的后綴ID。
作為此次升級(jí)到Jakarta EE 9的一部分汤锨,在無(wú)法獲得第三方庫(kù)的支持情況下双抽,已經(jīng)減少或刪除了對(duì)某些依賴(lài)項(xiàng)的支持。但是隨著生態(tài)系統(tǒng)逐漸適應(yīng)Jakarta EE 9中的新包名稱(chēng)闲礼,Spring 官方會(huì)重新引入支持牍汹。另外,推薦下 Spring boot 的實(shí)戰(zhàn)開(kāi)源項(xiàng)目:https://gitee.com/yoodb/jing-xuan柬泽。
目前已刪除對(duì)以下內(nèi)容的支持:
`EhCache 3`
`H2’s web console`
`Hibernate’s metrics`
`Infinispan`
`Jolokia`
`Pooled JMS`
`REST Assured`
部分支持刪除Spring Boot 3.0 中刪除了對(duì)以下依賴(lài)項(xiàng)的支持:
`Apache ActiveMQ`
`Atomikos`
`EhCache 2`
`Hazelcast 3`
`JSON-B`
還刪除Apache Johnzon的依賴(lài)管理慎菲,取而代之的是Eclipse Yasson。注意的是Apache Johnzon的Jakarta EE 9兼容版本可以與Spring Boot 3一起使用锨并,但是必須在依賴(lài)項(xiàng)聲明中指定一個(gè)版本露该。Spring Boot 3.0.0-M1遷移到Spring項(xiàng)目的依賴(lài)版本:
`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`
許多第三方依賴(lài)項(xiàng)也已更新,其中一些值得注意的是:
`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`
除了上面列出的更改之外第煮,還有一些小的調(diào)整和改進(jìn)解幼,包括:1. 對(duì)Java的SecurityManager支持,在JDK中被棄用后包警,Spring Boot 3.0.0-M1中已被刪除撵摆;2. 對(duì)Spring Framework的CommonsMultipartResolver的支持,在Spring Framework 6中刪除后害晦,Spring Boot 3.0.0-M1中也已經(jīng)被刪除特铝。Spring官方消息,計(jì)劃每?jī)蓚€(gè)月發(fā)布一個(gè)新的Spring Boot 3.0里程碑壹瘟,在今年3月24日發(fā)布Spring Boot 3.0.0-M2鲫剿,計(jì)劃在11月下旬發(fā)布GA版本。如果感興趣或者想嘗試這個(gè)新版本的朋友稻轨,可以從start.spring.io生成一個(gè)項(xiàng)目灵莲,注意選擇Java 17。有什么想說(shuō)的歡迎下方留言3握摺笆呆!