springboot3.0使用GraalVM

Windows 11上安装和使用GraalVM+SpringBoot3教程

spring官方有关GraalVm相关文档: GraalVM Native Image Support

安装GraalVM

下载压缩包

打开Releases · graalvm/graalvm-ce-builds · GitHub 按JDK版本下载GraalVM对应压缩包

配置环境变量

直接解压,并将环境变量中的JAVA_HOME的值替换为graalvm的安装目录

安装Visual Studio Build Tools

需要用到C语言环境,所以需要安装Visual Studio Build Tools

打开 Thank you for downloading Visual Studio - Visual Studio

进行下载,语言包只需要勾选英语。

测试

以管理员方式运行 X64 Native Tools Command Propmt

实在找不到这个的,可以直接在安装程序里启动

cli.exe
# 如果显示的是中文的话,需要修改成英文,通过Visual Studio Installer来修改,语言包,把原来打勾的中文选项去掉,只勾选英文选项

执行cl.exe是中文,需要切换成英文语言。

创建一个springboot3项目

可以在http://start.spring.io快速生成springboot项目

POM.xml

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.0.5</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>springboot3-demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springboot3-demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>19</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>	

     <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>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

生成exe可执行文件

1、打开X64 Native Tools Command Propmt窗口执行:

#先进入到对应的项目目录
cd C:\Users\tanhh\Desktop\springboot3\code\springboot3-demo

# 生成exe命令
mvn -Pnative native:compile

错误一:

找不到cl.exe,这个可能是没有安装Visual Studio Build Tools, 也可能是没有在X64 Native Tools Command Propmt窗口下执行。

错误二:

执行过程中出现下面错误信息:

[ERROR] Failed to execute goal org.graalvm.buildtools:native-maven-plugin:0.9.20:compile (default-cli) on project springboot3-demo: Execution of D:\develop\graalvm-ce-java19-22.3.1\bin\native-image.cmd @target\tmp\native-image-9198299026073687163.args returned non-zero result -> [Help 1]

根据错误找到了 @target\tmp\native-image-9198299026073687163.args这个文件,即target包下面的临时参数文件

实际上这个是因为安装 Visual Studio Build Tools的时候,语言包没有设置成英文的原因,可以看得出来啊,实际上生成执行exe分成了两个步骤去执行,首先需要生成 参数,在通过native-image操作执行参数

native-image @target\tmp\native-image-9198299026073687163.args 

错误三:

查看上面的切换语言包为英文即可

测试,秒启

利用Buildpacks构建可执行文件Docker

可以直接对本地可执行文件构建成镜像文件,这样就可以跨操作系统运行了,目前只支持到17,如果jdk设置成19,会出现报错。

Buildpacks,类似Dockerfile镜像构建技术

需要安装docker并启动docker

这种方式并不需要在机器上安装GGraalVM,会由springboot插件利用 /paketo-buildpacks/native-image来生成可执行文件,并打入到容器中

相关教程: GraalVM Native Image Support

Build a Spring Boot Application into a Native Executable

Docker镜像名称不能出现大写字母,所以我们需要设置一下镜像的名称

	<properties>
		<java.version>17</java.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<spring-boot-build-image.imageName>springboot3-demo</spring-boot-build-image.imageName>
	</properties>

然后执行命令生成Docker镜像。

# 生成docker镜像
mvn -Pnative spring-boot:build-image

# 运行docker镜像,秒启
docker run --rm -p 8080:8080 springboot3-demo:0.0.1-SNAPSHOT

注意: jdk的环境切换默认的jdk17

对jar包进行本地化构建

Spring Boot 应用程序通常通过 Maven ( mvn spring-boot:build-image) 或 Gradle ( gradle bootBuildImage) 集成使用 Cloud Native Buildpacks。但是,您也可以使用pack将经过 AOT 处理的 Spring Boot 可执行 jar 转换为本机容器映像。

首先,确保 Docker 守护程序可用(有关详细信息, 请参阅获取 Docker )。如果您使用的是 Linux,请将其配置为允许非根用户。

您还需要pack按照buildpacks.io 上的安装指南进行安装。

myproject-0.0.1-SNAPSHOT.jar假设一个 AOT 处理过的 Spring Boot 可执行 jar在目录中构建target,运行:

pack build --builder paketobuildpacks/builder:tiny \
    --path target/myproject-0.0.1-SNAPSHOT.jar \
    --env 'BP_NATIVE_IMAGE=true' \
    my-application:0.0.1-SNAPSHOT

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
Spring Boot 3.0 目前还没有正式发布,所以还不能确定它是否添加了对 Jetcache 的官方支持。但是,你可以在你的 Spring Boot 项目中手动集成 Jetcache。 要在 Spring Boot 项目中使用 Jetcache,首先需要添加 Jetcache 的相关依赖。你可以在 Maven 或者 Gradle 的配置文件中添加以下依赖: Maven: ```xml <dependency> <groupId>com.alicp.jetcache</groupId> <artifactId>jetcache-starter-redis</artifactId> <version>2.6.0</version> </dependency> ``` Gradle: ``` compile group: 'com.alicp.jetcache', name: 'jetcache-starter-redis', version: '2.6.0' ``` 上述依赖是使用 Redis 作为缓存后端的示例,如果你想使用其他的缓存后端,可以根据需要选择不同的依赖。 接下来,你需要在你的 Spring Boot 配置文件中配置 Jetcache 的相关信息。以下是一个示例配置: ```yaml spring: jetcache: enabled: true remote: server-addrs: redis://localhost:6379 ``` 这个示例配置将启用 Jetcache,并将 Redis 作为缓存后端。 最后,在你的代码中使用 `@Cached` 注解来标记需要缓存的方法,例如: ```java import com.alicp.jetcache.anno.Cached; @Cached(name = "myCache", expire = 3600) public String getData(String key) { // 从数据库或其他数据源获取数据的逻辑 // ... } ``` 这样,`getData` 方法的返回值将被缓存起来,下次调用时可以直接从缓存中获取,而不需要执行方法体。 这只是一个简单的示例,你可以根据实际需求配置更多的缓存策略和选项。Jetcache 提供了丰富的功能和选项,你可以参考 Jetcache 的官方文档以获取更多详细信息和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dr_eamboat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值