网站Logo GESONG

在Spring Boot项目中使用Leyden

gesong
0
2026-03-19

参考官方文档:https://docs.spring.io/spring-boot/reference/packaging/efficient.html

使用spring-boot-maven-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>

使用jdk26

虽然 Leyden 的部分成果(如 JEP 483, 514, 515)已经集成到标准 JDK 25 中 ,但最核心的“AOT 代码缓存”功能目前仍是 Leyden 项目的实验性特性,并未包含在标准版里 。因此,想体验完整的 Leyden 效果,必须下载专门的构建版本。

从 JDK 26 开始:Leyden 的一项重要成果——JEP 516: Ahead-of-Time Object Caching with Any GC(支持任意垃圾回收器的AOT对象缓存)——已经被正式合并到 JDK 的主干线,成为 JDK 26 的标准特性之一 。

打包

mvn -Dmaven.test.skip=true clean package

/Users/chengansheng/Library/Java/JavaVirtualMachines/openjdk-26/Contents/Home/bin/java -Djarmode=tools -jar target/springboot-wxcloudrun-1.0.jar extract  

当您使用 -Djarmode=tools 实用程序时,Spring 会使用各种布局将应用程序提取到目录中。在默认布局的情况下,该目录将包含:

  • 包含库的 lib 子目录

  • 包含应用程序类和引用 lib 文件夹中的库的清单的应用程序 JAR

试运行

/Users/chengansheng/Library/Java/JavaVirtualMachines/openjdk-26/Contents/Home/bin/java -XX:AOTCacheOutput=SpringbootWxcloudrun.aot -Dspring.context.exit=onRefresh -jar springboot-wxcloudrun-1.0/springboot-wxcloudrun-1.0.jar

将创建一个文件:

  • SpringbootWxcloudrun.aot 包含类元数据、堆对象和分析数据;

生产运行

/Users/chengansheng/Library/Java/JavaVirtualMachines/openjdk-26/Contents/Home/bin/java -XX:AOTCache=SpringbootWxcloudrun.aot -jar springboot-wxcloudrun-1.0/springboot-wxcloudrun-1.0.jar

通过生产模式运行,启动速度将会加快3倍左右。

动物装饰