Spring Native 0.10.0 現已推出

發布 | Sébastien Deleuze | 2021 年 6 月 14 日 | ...

我很高興代表團隊和所有做出貢獻的人宣布 Spring Native 0.10.0 已經發布。它基於 Spring Boot 2.5GraalVM 21.1

此版本包含許多功能,重點包括

  • 引入原生測試。

  • 來自 GraalVM 團隊的全新官方 Gradle 插件。

  • 引入可用於類別的 ahead-of-time proxies。

它還包括 43 個錯誤修復、文檔改進和依賴項升級。感謝所有通過問題報告和 pull request 做出貢獻的人。

Josh Long 製作了一個很棒的視頻來介紹這些新功能,所以請看看這個

原生測試和 Gradle 插件

我們一直與 GraalVM 團隊合作,將原生映像檔在構建插件方面提升到一個新的水平。新的 原生構建工具 取代了以前的 native-image-maven-plugin,並允許您使用本地 native-image 編譯器構建和測試您的原生應用程式。

雖然以前只有 Maven 支援,但現在提供了 Maven 和 Gradle 插件。如果您要升級,新的 Maven 插件座標為 org.graalvm.buildtools:native-maven-plugin:0.9.0。在 配置原生構建工具插件 之後,您可以使用 mvn -Pnative -DskipTests packagegradle nativeBuild 來構建您的應用程式。但您也可以使用 mvn -Pnative testgradle nativeTest 將您的 JUnit 5 測試作為原生映像檔運行。 Spring Native 本身已升級以添加初始測試支援,因此您的 @SpringBootTest 將作為原生映像檔運行。對於原生 Spring Boot 應用程式來說,這是一個重要的里程碑,對於包括 Spring 本身在內的 JVM 生態系統也是如此,現在可以使用這些官方插件來提高原生支援的質量和可維護性。您可以閱讀這篇 GraalVM 專用部落格文章 了解更多詳情。

start.spring.io 已經更新,除了 Buildpacks 原生支援外,還可以在開箱即用的情況下配置原生構建工具,因此您可以使用適合您需求的工具。

可用於類別的 Ahead-of-time proxies

對於原生映像檔,proxies 需要在構建時定義。到目前為止,Spring Native 僅支援可用於介面的 JDK proxies。通常通過 CGLIB proxies 在 JVM 上處理的類別上的 proxies 不受支援,因為在原生環境中不支援在運行時生成字節碼。

// Typical security use case of a class proxy now supported on native
@Service
public class GreetingService {

    public String hello() {
        return "Hello!";
    }

    @PreAuthorize("hasRole('ADMIN')")
    public String adminHello() {
        return "Goodbye!";
    }
}

但從 0.10 開始,由於 Andy Clement 的出色工作,現在可以在構建時通過 @AotProxyHint 註釋生成類別上的 proxies。請注意,以前的 @ProxyHint 已重命名為 @JdkProxyHint,以避免混淆。

它允許支援安全性、事務和各種其他基於 proxy 的類別機制。請注意,我們將完善此類模式的自動檢測,以減少所需的顯式提示數量。

下一步:功能配置 AOT 轉換

基於我們在 Spring FuSpring Init 實驗性專案中學到的知識,我們即將推出的 0.11 版本 將側重於引入功能配置 AOT 轉換,以便顯著減少 Spring 配置基礎設施的 reflection 量。這裡的目標是以一種原生映像檔靜態分析可以開箱即用的方式轉換 Spring 配置。這應該優化記憶體佔用並提高 Spring 應用程式的原生相容性。

獲取 Spring 電子報

通過 Spring 電子報保持聯繫

訂閱

取得領先

VMware 提供培訓和認證,以加速您的進展。

了解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進制文件。

了解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

查看全部