預先處理 (Ahead-of-Time Processing)

Spring AOT 是一個在構建時分析您的程式碼以生成最佳化版本的過程。它最常用於幫助生成 GraalVM 原生映象。

Spring Boot Gradle 外掛提供了可用於對應用程式和測試程式碼執行 AOT 處理的任務。當應用 GraalVM Native Image 外掛 時,這些任務會自動配置。

  • Groovy

  • Kotlin

plugins {
	id 'org.springframework.boot' version '3.4.5'
	id 'org.graalvm.buildtools.native' version '0.10.6'
	id 'java'
}
plugins {
	id("org.springframework.boot") version "3.4.5"
	id("org.graalvm.buildtools.native") version "0.10.6"
	java
}

處理應用

基於您使用 @SpringBootApplication 註解的主類,processAot 任務生成一個執行時將貢獻的 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 任務會自動配置為使用 processAotprocessTestAot 任務的輸出。