事前処理
Spring AOT は、最適化されたバージョンを生成するためにビルド時にコードを分析するプロセスです。これは、GraalVM ネイティブイメージの生成を支援するために最もよく使用されます。
Spring Boot Gradle プラグインは、アプリケーションとテストコードの両方で AOT 処理を実行するために使用できるタスクを提供します。GraalVM ネイティブイメージプラグイン (英語) が適用されると、タスクは自動的に構成されます。
Groovy
Kotlin
plugins {
id 'org.springframework.boot' version '3.4.1'
id 'org.graalvm.buildtools.native' version '0.10.4'
id 'java'
}
plugins {
id("org.springframework.boot") version "3.4.1"
id("org.graalvm.buildtools.native") version "0.10.4"
java
}
アプリケーションの処理
@SpringBootApplication
アノテーション付きメインクラスに基づいて、processAot
タスクは、実行時に提供される Bean の永続的なビューを生成し、Bean のインスタンス化ができるだけ簡単になるようにします。コールバックを使用して、ファクトリの追加の後処理が可能です。たとえば、これらは GraalVM がネイティブイメージでコンテキストを初期化するために必要なリフレクション構成を生成するために使用されます。
BeanFactory
はビルド時に完全に準備されるため、条件も評価されます。これは、実行時に通常の Spring Boot アプリケーションが行うことと比べて重要な違いがあります。たとえば、特定の機能をオプトインまたはオプトアウトする場合は、ビルド時に使用する環境を構成する必要があります。このため、processAot
タスクは JavaExec
(英語) タスクであり、必要に応じて環境変数、システムプロパティ、引数を使用して構成できます。
GraalVM ネイティブイメージプラグインの nativeCompile
タスクは、processAot
タスクの出力を使用するように自動的に構成されます。
処理テスト
AOT エンジンは、Spring のテストコンテキストフレームワークを使用する JUnit 5 テストに適用できます。processTestAot
タスクによって適切なテストが処理され、ApplicationContextInitializer
コードが生成されます。アプリケーション AOT 処理と同様に、BeanFactory
はビルド時に完全に準備されます。processAot
と同様に、processTestAot
タスクは JavaExec
サブクラスであり、必要に応じて構成して、この処理に影響を与えることができます。
GraalVM ネイティブイメージプラグインの nativeTest
タスクは、processAot
および processTestAot
タスクの出力を使用するように自動的に構成されます。