AOT およびネイティブイメージのサポート

4.0.0 以降、Spring Cloud Config サーバーは Spring AOT 変換をサポートしています。4.1.0 以降では、GraalVM 21 以上を使用している限り、GraalVM ネイティブイメージもサポートされますが、以下に説明するように、既知の GraalVM の課題に対する回避策をユーザーが追加する必要があります。

IMPORTANT

Graal の FileSystemProvider の [ バグ ] (github.com/oracle/graal/issues/5134 (英語) ) のため、構成サーバーをネイティブイメージとして実行できるように構成の回避策を追加する必要があります。GraalVM ビルドプラグインのセットアップに次のオプションを追加する必要があります (詳細については、GraalVM (英語) Maven または Gradle プラグインのドキュメントを参照してください)。

-H:-AddAllFileSystemProviders
--strict-image-heap
--initialize-at-build-time=org.bouncycastle
--initialize-at-build-time=net.i2p.crypto.eddsa.EdDSASecurityProvider
--initialize-at-run-time=org.bouncycastle.jcajce.provider.drbg.DRBG$Default
--initialize-at-run-time=org.bouncycastle.jcajce.provider.drbg.DRBG$NonceAndIV
NOTE

ビルド時の初期化を追加するとパフォーマンスに影響を与える可能性がありますが、それでも通常の JVM 実行と比較して利点が得られる可能性があります。アプリケーションに合わせて必ず測定して比較してください。

TIP

SSH 経由で構成データバックエンドに接続している場合、GraalVM では java.security を使用したセキュリティプロバイダーの登録 (英語) が必要であることに注意してください。

リフレッシュスコープは、ネイティブイメージではサポートされていません。構成クライアントアプリケーションをネイティブイメージとして実行する場合は、必ず spring.cloud.refresh.enabled プロパティを false に設定してください。