spring-native介绍

原创作者:DDY

背景:

Spring 团队日前发布了 Spring Native Beta 版。通过 Spring Native,Spring 应用将有机会以 GraalVM 原生镜像的方式运行。为了更好地支持原生运行,Spring Native 提供了 Maven 和 Gradle 插件,并且提供了优化原生配置的注解。


特点:
基于native images: GraalVM 进行代码编译

优点:
1.立即启动,一般启动时间小于100ms
2.更低的内存消耗
3.独立部署,不再需要JVM
4.同样的峰值性能要比JVM消耗的内存小
缺点:
1.构建时间长
2.只支持新的Springboot版本(Spring Native 0.9.0 supports Spring Boot 2.4.3, Spring Native 0.9.1 will support Spring Boot 2.4.4, etc.)

评估:

DDY的评估页

新版本说明:

(一) 本系统基于0.91版本建设,新版本说明见《spring-native新版本说明

(二)作者已完成基于0.10.1版本的详细编制攻略,觉得本文编程部分写得不清晰的同学请移步《基于spring-native 0.10.1版本的完整初级入门流程

操作命令:
1. mvn spring-boot:build-image
2. gradle bootBuildImage

实践:
1.新建一个2.4.4版本的springboot项目。

2.在pom.xml的位置使用命令mvn spring-boot:build-image构建。

配置阿里云的maven 代理仓库:
<repository>
<id>grails-core</id>
<url>https://maven.aliyun.com/repository/grails-core</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>


在项目POM中引入依赖:

<dependency>
    <groupId>org.springframework.experimental</groupId>
    <artifactId>spring-native</artifactId>
    <version>0.9.1-20210321.194059-39</version>
</dependency>

<plugin>
    <groupId>org.springframework.experimental</groupId>
    <artifactId>spring-aot-maven-plugin</artifactId>
    <version>0.9.1</version>
    <executions>
        <execution>
            <id>test-generate</id>
            <goals>
                <goal>test-generate</goal>
            </goals>
        </execution>
        <execution>
            <id>generate</id>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>


Spring AOT 插件
Spring AOT插件执行提前转换,以提高native image的兼容性和内存占用。
提示:转换也适用于JVM,所以无论如何这都可以应用。

参考代码:

https://gitee.com/godlife_077/spring-boot-native#https://blog.csdn.net/sinat_20259781/article/details/115249120

参考链接:

spring-native官方文档:

https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/#getting-started-native-image

spring.io上的项目介绍:

https://spring.io/blog/2021/03/11/announcing-spring-native-beta

GitHub仓库:

https://github.com/spring-projects-experimental/spring-native

基于spring-native 0.10.1版本的完整初级入门流程

闷棍暴打面试官 SpringNative 源码系列: (一) 打造更适合Spring的原生镜像

【jar 很大,你忍一下】GraalVM 21.2 发布,大量实用性改进

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐