Spring Boot 3.0正式釋出
SpringBoot 3.0現已正式釋出,可以在Maven Central中找到。
這是自四年前釋出2.0以來的第一個主要版本。它也是SpringBoot的第一個GA版本,提供了對Spring Framework 6.0和GraalVM的支援。
新版本的亮點包括:
- 基於Java 17
- 支援使用GraalVM生成本機映象,取代了實驗性的Spring Native專案
- 透過測微計和測微計跟蹤提高可觀察性
- 支援Jakarta EE 10和EE 9基線
最大亮點是用GraalVM提前編譯AOT升級了Spring-Native:
支援使用GraalVM將Spring應用編譯成本地可執行的映象檔案,可以顯著提高啟動速度和峰值效能,減少記憶體佔用。
傳統的應用程式是編譯成位元組碼,然後由JVM解釋,最後編譯成機器碼執行,而Spring Native是透過AOT提前編譯成機器碼,執行時直接靜態編譯成可執行檔案。
提前編譯AOT實際上就是不透過中間步驟(位元組碼,然後即時JIT編譯器),而是在過程的一開始就把原始碼編譯成最終版本。
這種方法使得提前最佳化和生成機器程式碼成為可能,同時擺脫了所有的JVM臃腫,如Classpath或虛擬機器本身。
然而,這也不是免費的:
由Graal VM編譯的應用程式必須在 "封閉世界假設 "下工作。
這意味著,應用程式中所有可以在執行時呼叫的位元組碼必須在構建時已經知道(也能被觀察到和分析)。
這對使用反射機制的程式影響特別大:
這是因為編譯器必須猜測它應該把哪些(通常是動態的)資源新增到最終的工件中,儘管程式碼中沒有直接引用它們。
眾所周知,Spring在很大程度上是基於反射機制的,因此需要將其精確地適應於GraalVM,這個過程耗費了近三年時間。
另外一項新功能:
為 Spring Integration 元件的觀察模式提供配置屬性:
Spring Integration 可以根據@EnableIntegrationManagement.observationPatterns值檢測其元件
- 公開 spring.integration.management.observation-patterns 配置屬性
- 將此屬性傳播到 IntegrationAutoConfiguration.IntegrationManagementConfiguration 的 @EnableIntegrationManagement 中
- 透過 IntegrationAutoConfigurationTests.integrationManagementInstrumentedWithObservation()驗證該屬性是否有作用。
更多修復
SpringBoot3構建演示
透過Spring Initialzr新建工程,使用最新版本的Spring Boot 3.0.0-SNAPSHOT,勾選GraalVM Native Support,新建工程後新增TestController:
@RestController public class TestController { @GetMapping("/") public String hello () { return "GraalVM ..." ; } } |
直接執行程式,發現啟動時間大約需要1秒。
下面使用Graal生成本機原生映象:
執行生成映象檔案的命令:
./gradlew nativeCompile
這個AOT過程比較耗時,大概2分鐘。
執行命令:
./build/native/nativeCompile/demo2
啟動時間是 0.082 秒,快了 10 倍多。
如果你使用maven,使用如下命令:
- mvnw -Pnative native:compile
- ./target/demo2
SpringBoot3構建案例:
相關文章
- Spring Boot 2.4 正式釋出,重大調整!!!Spring Boot
- Spring Boot 2.0正式釋出,升還是不升呢?Spring Boot
- MongoDB 3.0 正式版釋出!MongoDB
- Bootstrap 3.0 正式版釋出boot
- Apache Dubbo 官方正式釋出 Spring 6 & Spring Boot 3 支援ApacheSpring Boot
- Spring Boot 2.1.0釋出Spring Boot
- Spring Tool Suite 3.0釋出SpringUI
- 重磅升級!TDengine3.0 正式釋出
- Spring Boot 2.6.1 重磅釋出!Spring Boot
- Spring Framework 6.0 正式釋出SpringFramework
- Spring Security 5.0.0正式釋出Spring
- React Suite v3.0 正式版釋出ReactUI
- Spring Cloud 2021.0.0 正式釋出,第一個支援Spring Boot 2.6的版本!CloudSpring Boot
- Apache Spark 3.0 預覽版正式釋出,多項重大功能釋出ApacheSpark
- 【重磅】Spring Boot 2.1.0 權威釋出Spring Boot
- Spring Boot 3.3 正式釋出,王炸級更新,應用啟動速度直接起飛!Spring Boot
- 棄用Java 8,Apache Kafka釋出3.0正式版JavaApacheKafka
- 微軟MSN正式釋出移動Messenger3.0版微軟Messenger
- Spring Framework 3.2正式版釋出SpringFramework
- Spring Framework 4.0 正式版釋出SpringFramework
- 重要版本Spring Boot 2.3.0釋出 - spring.ioSpring Boot
- 2022年11月將釋出基於Java17的Spring Boot 3.0JavaSpring Boot
- Spring Boot + Nacos 實現不停服釋出Spring Boot
- EasyCriteria 3.0 釋出
- Express 3.0釋出Express
- Spring Boot 2.4.0正式釋出,全新的配置檔案載入機制(不向下相容)Spring Boot
- Spring Boot 2.6.0正式釋出:預設禁止迴圈依賴、增強Docker映象構建...Spring BootDocker
- Spring Boot 輕量替代框架 Solon 1.3.29 釋出Spring Boot框架
- Spring Boot 2.1.0 已釋出,7 個重大更新!Spring Boot
- spring boot 使用redis進行釋出訂閱Spring BootRedis
- Spring Boot整合Spring Cloud Release進行版本釋出管理Spring BootCloud
- SpringBoot 3.0正式釋出,有這幾個新變化!Spring Boot
- Spring 官宣釋出 Spring Boot 3.0 第一個里程碑 M1,從 Java 8 提升到 Java 17!Spring BootJava
- spring-boot-plus1.1.0.釋出-整合Spring Boot Admin管理和監控應用Spring Boot
- Spring Boot 輕量替代框架 Solon 1.3.20 釋出Spring Boot框架
- Spring Boot 輕量替代框架 Solon 1.3.15 釋出Spring Boot框架
- Spring Boot 輕量替代框架 Solon 1.3.18 釋出Spring Boot框架
- Spring Boot & Cloud 輕量替代框架 Solon 1.4.1 釋出Spring BootCloud框架