领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多我很高兴代表所有贡献者宣布 Spring Native for GraalVM 0.8.3 已经发布,并且可以从 Spring 里程碑仓库获得,查看更新的 参考文档了解更多详情。
Spring Native for GraalVM 提供了使用 native-image 编译器将 Spring 应用程序编译为本机可执行文件的孵化支持,以便提供设计为打包在轻量级容器中的本机部署选项。 实际上,目标是在这个新平台上支持您的 Spring 应用程序(通常是 Spring Boot 应用程序),无需修改。
0.8.3 现在基于 Spring Boot 2.4.0,并且是基于 Spring Boot 稳定版本的第一个版本。
0.8.3 专为刚刚发布的 GraalVM 20.3.0 设计。
到目前为止,为了将 Spring 应用程序编译为本机程序,您必须使用 @SpringBootApplication(proxyBeanMethods = false)
和 @Configuration(proxyBeanMethods = false)
,因为 proxyBeanMethods = true
(先前的默认行为)创建的 CGLIB 代理在本机程序中不受支持。
从 Spring Native 0.8.3 开始,@SpringBootApplication
和 @Configuration
不再创建 CGLIB 代理,因此它们开箱即用就符合本机程序的要求。 我们还添加了一种验证机制,用于检查您的应用程序和库是否不使用交叉 @Bean
调用(仅在使用 CGLIB 代理时才支持),如果检测到此类模式,则会抛出错误。 如果需要,您可以使用 -Dspring.native.verify=false
关闭此验证。
与往常一样,我们正在努力逐步提高本机支持的范围和质量,有关更多详细信息,请参见详细的变更日志。
我们预计 2021 年初发布的下一个0.9.0 里程碑将是一个重要的里程碑,因为它将实现我们对 Spring Boot starters 子集(如 Spring MVC,WebFlux,Data(JPA、JDBC、Elastic Search、Neo4j、MongoDB、Redis、R2DBC)、Security、Batch、Function 等)的 Beta 支持的开始。
我们将进行一些大的重构,以逐步将该项目转换为可以在以后集成到 Spring 顶级项目中的模块。 作为此过程的一部分,我们将引入一组 构建时转换,这些转换将在您的应用程序上完成,以便在健壮性和效率方面将 Spring Native 提升到一个新的水平。
与此同时,我们还与 GraalVM 团队合作进行 JUnit 5 本机测试,并帮助 JVM 库以可维护的方式开箱即用地支持本机编译。 我们将在明年年初分享更多关于这项工作的信息。