Spring Native for GraalVM 0.8.3 现已发布

发布 | Sébastien Deleuze | 2020 年 11 月 23 日 | ...

我很高兴代表所有贡献者宣布 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 基线

0.8.3 现在基于 Spring Boot 2.4.0,并且是基于 Spring Boot 稳定版本的第一个版本。

GraalVM 20.3.0 支持

0.8.3 专为刚刚发布的 GraalVM 20.3.0 设计。

具有默认属性的 @SpringBootApplication 和 @Configuration

到目前为止,为了将 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 库以可维护的方式开箱即用地支持本机编译。 我们将在明年年初分享更多关于这项工作的信息。

获取 Spring 新闻邮件

通过 Spring 新闻邮件保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中为 OpenJDK™、Spring 和 Apache Tomcat® 提供支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部