事前処理

Spring AOT は、最適化されたバージョンを生成するためにビルド時にコードを分析するプロセスです。これは、GraalVM ネイティブイメージの生成を支援するために最もよく使用されます。

Spring Boot Gradle プラグインは、アプリケーションとテストコードの両方で AOT 処理を実行するために使用できるタスクを提供します。GraalVM ネイティブイメージプラグイン (英語) が適用されると、タスクは自動的に構成されます。

  • Groovy

  • Kotlin

plugins {
	id 'org.springframework.boot' version '3.3.1'
	id 'org.graalvm.buildtools.native' version '0.10.2'
	id 'java'
}
plugins {
	id("org.springframework.boot") version "3.3.1"
	id("org.graalvm.buildtools.native") version "0.10.2"
	java
}
Groovy
Kotlin

アプリケーションの処理

@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 タスクの出力を使用するように自動的に構成されます。