使用 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) 处理有一些缺点。这意味着以下限制:
-
类路径在构建时是固定的且完全定义的
-
应用程序中定义的 Bean 无法在运行时更改,这意味着
-
Spring 的
@Profile
注解和特定于配置文件的配置存在限制。 -
不支持在创建 Bean 时发生更改的属性(例如,
@ConditionalOnProperty
和.enable
属性)。
-
要了解有关提前(Ahead-of-Time,AOT)处理的更多信息,请参见理解 Spring 提前处理 部分。