体验一下正式发布的SpringBoot3.0


体验一下正式发布的SpringBoot3.0

文章插图
 
GraalVM 版本:graalvm-ce-JAVA17-22.3.0
SpringBoot3.0 中最重要的特性就是对 GraalVM 的支持,从而达到更快的启动速度,有两种使用方式 。
利用 GraalVM 构建可执行文件
因为需要利用 GraalVM 来打包可执行文件,所以需要你的机器上安装了 GraalVM 。
新建一个 SpringBoot 3.0 的 Maven 工程,引入 parent、starter 依赖、以及两个重要的插件:
【体验一下正式发布的SpringBoot3.0】<build><plugins><plugin><groupId>org.graalvm.buildtools</groupId><artifactId>native-maven-plugin</artifactId></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>复制代码然后执行:
mvn -Pnative clean native:compile复制代码需要花费一些时间...
执行完能看到 BUILD SUCCESS:
体验一下正式发布的SpringBoot3.0

文章插图
 
然后进入 target,就能看到一个 exe 文件:
体验一下正式发布的SpringBoot3.0

文章插图
 
我们可以直接运行该 exe 来启动我们的 SpringBoot 应用:
体验一下正式发布的SpringBoot3.0

文章插图
 
这样,我们就可以把这个可执行文件发送给另外的 windows 机器了,并且对方机器都不需要安装 JDK 就能运行我们的 SpringBoot 程序(亲自测过,确实能直接运行) 。
不过大家应该发现了问题,在 windows 上编译出来的是 exe 文件,它是不能在 linux 上运行的,那么怎么办呢?
利用 Buildpacks 构建可执行文件 Docker 镜像我们可以直接把 SpringBoot 应用对应的本地可执行文件构建为一个 Docker 镜像,这样就能跨操作系统运行了 。
Buildpacks,类似 Dockerfile 的镜像构建技术
注意要安装 docker,并启动 docker
注意这种方式并不要求你机器上安装了 GraalVM,会由 SpringBoot 插件利用
/paketo-buildpacks/native-image 来生成本地可执行文件,然后打入到容器中
Docker 镜像名字中不能有大写字母,我们可以配置镜像的名字:
<properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring-boot.build-image.imageName>springboot3demo</spring-boot.build-image.imageName></properties>复制代码然后执行:
mvn -Pnative spring-boot:build-image复制代码来生成 Docker 镜像 。
执行完之后,就能看到 docker 镜像了:
体验一下正式发布的SpringBoot3.0

文章插图
 
然后就可以运行容器了:
docker run --rm -p 8080:8080 springboot3demo参考
https://docs.spring.io/spring-boot/docs/current/reference/html/native-image.html#native-image.developing-your-first-Application.native-build-tools
https://www.graalvm.org/22.2/reference-manual/native-image/guides/build-spring-boot-app-into-native-executable/




    推荐阅读