GraalVM版Spring Native 0.8.3现已可用

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

我代表所有做出贡献的人员,高兴地宣布GraalVM版Spring Native 0.8.3已发布,并可从Spring里程碑存储库获取,查看更新的参考文档以了解更多详细信息。

GraalVM版Spring Native 提供了一种孵化支持,可以使用 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 启动器(如 Spring MVC、WebFlux、Data(JPA、JDBC、Elasticsearch、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社区中所有即将举行的活动。

查看全部