Spring Native for GraalVM 0.8.3 现已发布

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

我代表所有为此做出贡献的人,很高兴地宣布 Spring Native for GraalVM 0.8.3 版本已发布,并可从 Spring milestone repository 获取。请查看更新的 参考文档 以获取更多详细信息。

Spring Native for GraalVM 提供了一个实验性的支持,可以使用 native-image 编译器将 Spring 应用程序编译为本地可执行文件,从而提供一个设计用于打包在轻量级容器中的本地部署选项。实际上,目标是在这个新平台上支持(通常是 Spring Boot)未修改的 Spring 应用程序。

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 来关闭此验证。

改进的兼容性

一如既往,我们正在努力逐步改进我们的原生支持范围和质量,请参阅 详细的变更日志 以获取更多详细信息。

下一步

我们下一个 0.9.0 里程碑 预计在 2021 年初发布,它将标志着我们在部分 Spring Boot starter(如 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 社区所有即将举行的活动。

查看所有