一、SpringBoot3.0
1、spring.factories文件廢棄,自動配置包位置變化
有自己寫過starter包的友友們一定知道,一定用/META-INF/spring.factories文件定義發(fā)現(xiàn)自動配置,但是在springboot 2.7,這個文件就被棄用了,在springboot 3.0 就被徹底移除了。
比如之前定義的/META-INF/spring.factories文件:
而現(xiàn)在 這個/META-INF/spring.factories并不是不存在了,只是在3.0之后外部自動配置類
是不通過這種方式去配置了。而是通過META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件,既然他的路徑有所改變,那么底層代碼一定也是有改變的,相信大家都看過自動裝配的原理,不知道的小伙伴可以去看看我之前的文章。
2、Spring Native
Spring Native 也是升級的一個重大特性,支持使用GraalVM將SpringBoot 的應用程序編譯成本地可執(zhí)行的鏡像文件,可以顯著提升啟動速度、峰值性能以及減少內(nèi)存使用。
我們傳統(tǒng)的應用都是編譯成字節(jié)碼,然后通過JVM解釋并最終編譯成機器碼來運行,而Spring Native則是通過AOT提前編譯為機器碼,在運行時直接靜態(tài)編譯成可執(zhí)行文件,不依賴JVM。GraalVM的即時編譯器和AOT編譯器可以顯著提高應用程序的性能。據(jù)測試,GraalVM的性能可以比傳統(tǒng)的JVM高出20%-100%。
近幾年來,Go語言火了,Go語言是一種編譯型語言,我們需要先把Go代碼直接編譯成為一個二進制執(zhí)行文件,比如windows上的exe文件,然后直接運行exe文件就能快速啟動程序。
如果說,十年前,Spring是Java的春天,那現(xiàn)在GraalVM就是Java的救世主,Java要想不被Go擠掉,整個Java生態(tài)都要向GraalVM靠齊。
快速體驗
下載GRaalvm
https://github.com/graalvm/graalvm-ce-builds/releases
下載之后解壓安裝。
配置
配置完之后可以看下版本
安裝Native lmage工具
如果沒有安裝該工具,maven在打包的時候會自動下載,但建議提前安裝打包工具。這一步由于會從github上下載資源、所以會比較久久可能會連接超時,所以需要多試幾次。
gu install native-image
到你項目根目錄運行生成exe文件
時間可能會有點久mvn -Pnative native:compile
然后在輸出目錄就會生成exe文件,
啟動,性能加倍。
3、jakata api遷移
從Java EE APIs 到 Jakarta EE
Spring Boot 3開始,所有的Java EE Api都需要遷移到Jakarta EE上來。大部分用戶需要修改import相關(guān)API的時候,要用jakarta替換javax。比如:原來引入javax.servlet.Filter的地方,需要替換為jakarta.servlet.Filter。但還有一些依賴Java EE API的第三方庫,目前還沒有得到很好的支持,所以在Spring Boot 3中暫時會先移除這類組件的支持(比如:EhCache 3、Infinispan、Jolokia、Pooled JMS等)。所以,目前的M1版本相較2.x版本來說,會有一些特性的缺失。當然大多數(shù)應該還只是暫時的,Spring Boot官方會等這些第三方庫發(fā)布Jakarta兼容庫之后再重新引入。
3、三方庫的支持
Spring Boot 3.0 基于并需要 Spring Framework 6。
此版本中升級的其他 Spring 項目包括:
Spring AMQP 3.0.
Spring Batch 5.0.
Spring Data 2022.0.
Spring GraphQL 1.1.
Spring HATEOAS 2.0.
Spring Integration 6.0.
Spring Kafka 3.0.
Spring LDAP 3.0.
Spring REST Docs 3.0.
Spring Retry 2.0.
Spring Security 6.0 (see also what’s new).
Spring Session 2022.0.
Spring WS 4.0.
Spring Boot 3.0 已將所有依賴項從 Java EE 遷移到 Jakarta EE API。盡可能選擇 Jakarta EE 10 兼容依賴項,包括:
Jakarta Activation 2.1
Jakarta JMS 3.1
Jakarta JSON 2.1
Jakarta JSON Bind 3.0
Jakarta Mail 2.1
Jakarta Persistence 3.1
Jakarta Servlet 6.0
Jakarta Servlet JSP JSTL 3.0
Jakarta Transaction 2.0
Jakarta Validation 3.0
Jakarta WebSocket 2.1
Jakarta WS RS 3.1
Jakarta XML SOAP 3.0
Jakarta XML WS 4.0
我們還盡可能升級到第三方 jar 的最新穩(wěn)定版本。這里一些值得注意的依賴項升級包括:文章來源:http://www.zghlxwxcb.cn/news/detail-686644.html
Couchbase Client 3.4
Elasticsearch Client 8.5
Flyway 9
Groovy 4.0
Hibernate 6.1
Hibernate Validator 8.0
Jackson 2.14
Jersey 3.1
Jetty 11
jOOQ 3.16
Kotlin 1.7.20
Liquibase 4.13
Lettuce 6.2
Log4j 2.18
Logback 1.4
Micrometer 1.10
Micrometer Tracing 1.0
Neo4j Java Driver 5.2
Netty 4.1.77.Final
OkHttp 4.10
R2DBC 1.0
Reactor 2022.0
SLF4J 2.0文章來源地址http://www.zghlxwxcb.cn/news/detail-686644.html
到了這里,關(guān)于SpringBoot3.0新特性:1、spring.factories文件廢棄,自動配置包位置變化 2、Spring Native 快速體驗 3、jakata api遷移 3、三方庫的支持的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!