GraalVM 版别:graalvm-ce-java17-22.3.0

SpringBoot3.0 中最重要的特性就是对 GraalVM 的支撑,然后到达更快的发动速度,有两种使用方法。

使用 GraalVM 构建可履行文件

由于需求使用 GraalVM 来打包可履行文件,所以需求你的机器上装置了 GraalVM。

新建一个 SpringBoot 3.0 的 Maven 工程,引进 parent、starter 依赖、以及两个重要的插件:

<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-Pnativecleannative: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-Pnativespring-boot:build-image

来生成 Docker 镜像。

履行完之后,就能看到 docker 镜像了:

SpringBoot3.0正式发布,我来尝尝鲜

然后就能够运转容器了:

dockerrun--rm-p8080:8080springboot3demo

顺便记录一下相关教程:

  1. docs.spring.io/spring-boot…
  2. www.graalvm.org/22.2/refere…