springboot 使用native核心
只要关注pom即可
- 必须引入parent 以3.4.3为例子
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
- 引入插件
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
</plugin>
3.修改springboot打包
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<env>
<BP_NATIVE_IMAGE>true</BP_NATIVE_IMAGE>
</env>
</image>
</configuration>
</plugin>
4.打包命令
mvn -Pnative -Dmaven.test.skip spring-boot:build-image
5.验证
运行docker 服务, 可以看到 启动速度小于1s.
- 备注
只是简单部署一个web接口服务的难度不大,难点在于集成其它组件。并不是所有组件都会立刻更新支持最新的native包,
比如java21下我用tomcat 做服务就啥错都不报,但是切成undertow每次第一次调用接口就会报错,但不影响结果
比如java21下我用jpa做orm就没问题,但是mybits配置云原生设置后用有java版本的异常,导致无法启动
总之用原生打包关键要验证所有使用三方库适配情况,项目中使用了反射的地方也要多验证。