领先一步
VMware 提供培训和认证,以加快您的进步。
了解更多我代表所有做出贡献的人员,高兴地宣布GraalVM版Spring Native 0.8.3已发布,并可从Spring里程碑存储库获取,查看更新的参考文档以了解更多详细信息。
GraalVM版Spring Native 提供了一种孵化支持,可以使用 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 启动器(如 Spring MVC、WebFlux、Data(JPA、JDBC、Elasticsearch、Neo4j、MongoDB、Redis、R2DBC)、Security、Batch、Function 等)上开始提供 Beta 支持。
我们将进行一些重大的重构,以逐步将项目转换为模块,这些模块稍后可以集成到 Spring 的顶级项目中。作为此过程的一部分,我们将引入一组 构建时转换,这些转换将在您的应用程序上执行,以便在稳健性和效率方面将 Spring Native 提升到一个新的水平。
与此同时,我们还与 GraalVM 团队合作,进行 JUnit 5 原生测试,并帮助 JVM 库以可维护的方式直接支持原生编译。我们将在明年年初分享更多关于这方面的工作。