使用 JVM 进行预先处理
使用 AOT 生成的初始化代码运行应用程序有利于缩短启动时间。首先,你需要确保构建的 jar 包中包含 AOT 生成的代码。
备注
CDS 和 AOT 可以结合使用,以进一步改善启动时间。
对于 Maven 来说,这意味着你应该使用 -Pnative
来构建以激活 native
配置文件:
$ mvn -Pnative package
对于 Gradle,你需要确保你的构建中包含了 org.springframework.boot.aot
插件。
当 JAR 构建完成后,通过设置 spring.aot.enabled
系统属性为 true
来运行它。例如:
$ java -Dspring.aot.enabled=true -jar myapplication.jar
........ Starting AOT-processed MyApplication ...
请注意,使用提前处理(ahead-of-time processing)有一些缺点。这意味着以下限制:
-
类路径在构建时是固定的且完全定义的
-
应用程序中定义的 bean 在运行时不能更改,这意味着:
-
不支持根据 bean 创建而改变的属性(例如,@ConditionalOnProperty 和
.enabled
属性)。
要了解更多关于提前编译(Ahead-of-Time Processing)的信息,请参阅理解 Spring 提前编译部分。