|
对于最新稳定版本,请使用 Spring Boot 4.0.4! |
预先处理(Ahead-of-Time Processing)
Spring AOT 是一种在构建时分析您的代码以生成其优化版本的过程。 它最常用于帮助生成 GraalVM 原生镜像。
org.springframework.boot.aot Gradle 插件提供了可用于对应用程序代码和测试代码执行 AOT(提前编译)处理的任务。
当应用 GraalVM Native Image 插件 时,该插件会自动被启用:
-
Groovy
-
Kotlin
plugins {
id 'org.springframework.boot' version '3.5.12'
id 'org.graalvm.buildtools.native' version '0.10.6'
id 'java'
}
plugins {
id("org.springframework.boot") version "3.5.12"
id("org.graalvm.buildtools.native") version "0.10.6"
java
}
如果你想在 JVM 上运行经过 AOT 处理的应用程序,而不是作为原生镜像运行,请直接应用 org.springframework.boot.aot 插件:
-
Groovy
-
Kotlin
plugins {
id 'org.springframework.boot' version '3.5.12'
id 'java'
}
apply plugin: 'org.springframework.boot.aot'
plugins {
id("org.springframework.boot") version "3.5.12"
java
}
apply(plugin = "org.springframework.boot.aot")
处理应用程序
根据您使用 @SpringBootApplication 注解的主类,processAot 任务会生成一个持久化的 Bean 视图,该视图描述了在运行时将被注册的 Bean,从而尽可能简化 Bean 的实例化过程。
可以使用回调对工厂进行额外的后处理。
例如,这些回调用于生成 GraalVM 在原生镜像中初始化上下文所需的反射配置。
由于 BeanFactory 在构建时已完全准备就绪,条件也会被评估。
这与常规 Spring Boot 应用程序在运行时所执行的操作有重要区别。
例如,如果您希望启用或禁用某些功能,则需要配置构建时使用的环境以实现此目的。
为此,processAot 任务是一个 JavaExec 任务,并可以根据需要使用环境变量、系统属性和参数进行配置。
GraalVM Native Image 插件的 nativeCompile 任务会自动配置为使用 processAot 任务的输出。
处理测试
AOT 引擎可应用于使用 Spring 测试上下文框架的 JUnit 5 测试。
符合条件的测试会由 processTestAot 任务处理,以生成 ApplicationContextInitializer 代码。
与应用程序的 AOT 处理一样,BeanFactory 在构建时就已完全准备就绪。
与 processAot 类似,processTestAot 任务是 JavaExec 的子类,可根据需要进行配置以影响此处理过程。
GraalVM Native Image 插件的 nativeTest 任务会自动配置为使用 processAot 和 processTestAot 任务的输出。