使用 JVM 进行提前编译(Ahead-of-Time)处理
使用 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)的更多信息,请参阅 Understanding Spring Ahead-of-Time Processing 部分。