前言
springboot3 最重大的特性就是Spring Native ,它可以将 Spring 应用程序转换成本地镜像或原生二进制文件,以提供更快的启动和更小的内存占用。实践过程,还是有不少坑。
实现原理
用GraalVM取代传统JVM,可以构建更快、更小、更精简的应用程序。看下它的优势

实践
1 官网下载GraalVM,提议下载java17对应的版本, 它是 JDK 8 之后首个长期支持(LTS)版本,包括一些新的语言特性和增强功能。

2 配置环境变量包括JAVA_HOME,LIB,INCLUDE(从vistual studio 里面下载),将JAVA_HOME改为GraalVM的根目录即可,然后在IDE工具中将你的JDK配置换成GraalVM对应的目录。

3 安装native-image,native-image编译java为二进制,需要依赖C++编译工具,命令
gu install native-image

安装依赖
4 配置pom.xml,添加对应的依赖插件

5 执行maven命令,必定要加上-Pnative参数
mvn -Pnative clean native:compile
结果
构建成功:构建有点长,我的项目用了3:53 分钟,成功后的截图:

写在最后
十多年软件开发,目前每天思考的是如何用最优的技术,最快速的落地业务,希望大家一起多多交流。
© 版权声明
文章版权归作者所有,未经允许请勿转载。





别费时间在native上,除了原生jdk的代码,第三方依赖体系的那是一团糟,就比如我的项目里的mybatis,虽然mybatis官网说,但按照官网手册怎么调,都会在运行时奔溃,而像日志、redis、druid等,都要一个个手动实现,也就是说,想玩native,除了原生jdk和spring家族核心的几个包,其他的都要拜拜
谢谢建议,用的时候只按照官网的来确实有很多问题
我已经放弃了,以其花时间去分析程序为何崩溃或无法启动,还不如直接用go
兼容性怎么样?openjdk可以吗
加油💪~我的应用因为用是用Spring全家桶,花了一天时间迁移到Spring Native,启动时间变成毫秒级,占用资源也少了很多。还是非常值得的。
启动确实快了很多
试着写过demo,实在难用,真不如我直接用go或者rust
后面肯定会越来越好
第三方兼容一塌糊涂
就是个demo而已
收藏了,感谢分享
谢谢