取得領先
VMware 提供培訓和認證,以加速您的進展。
了解更多我很高興代表團隊和所有做出貢獻的人宣布 Spring Native 0.10.0 已經發布。它基於 Spring Boot 2.5 和 GraalVM 21.1。
此版本包含許多功能,重點包括
引入原生測試。
來自 GraalVM 團隊的全新官方 Gradle 插件。
引入可用於類別的 ahead-of-time proxies。
它還包括 43 個錯誤修復、文檔改進和依賴項升級。感謝所有通過問題報告和 pull request 做出貢獻的人。
Josh Long 製作了一個很棒的視頻來介紹這些新功能,所以請看看這個
我們一直與 GraalVM 團隊合作,將原生映像檔在構建插件方面提升到一個新的水平。新的 原生構建工具 取代了以前的 native-image-maven-plugin
,並允許您使用本地 native-image
編譯器構建和測試您的原生應用程式。
雖然以前只有 Maven 支援,但現在提供了 Maven 和 Gradle 插件。如果您要升級,新的 Maven 插件座標為 org.graalvm.buildtools:native-maven-plugin:0.9.0
。在 配置原生構建工具插件 之後,您可以使用 mvn -Pnative -DskipTests package
或 gradle nativeBuild
來構建您的應用程式。但您也可以使用 mvn -Pnative test
或 gradle nativeTest
將您的 JUnit 5 測試作為原生映像檔運行。 Spring Native 本身已升級以添加初始測試支援,因此您的 @SpringBootTest
將作為原生映像檔運行。對於原生 Spring Boot 應用程式來說,這是一個重要的里程碑,對於包括 Spring 本身在內的 JVM 生態系統也是如此,現在可以使用這些官方插件來提高原生支援的質量和可維護性。您可以閱讀這篇 GraalVM 專用部落格文章 了解更多詳情。
start.spring.io 已經更新,除了 Buildpacks 原生支援外,還可以在開箱即用的情況下配置原生構建工具,因此您可以使用適合您需求的工具。
對於原生映像檔,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 的類別機制。請注意,我們將完善此類模式的自動檢測,以減少所需的顯式提示數量。
基於我們在 Spring Fu 和 Spring Init 實驗性專案中學到的知識,我們即將推出的 0.11 版本 將側重於引入功能配置 AOT 轉換,以便顯著減少 Spring 配置基礎設施的 reflection 量。這裡的目標是以一種原生映像檔靜態分析可以開箱即用的方式轉換 Spring 配置。這應該優化記憶體佔用並提高 Spring 應用程式的原生相容性。