このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring Data Commons 3.5.5 を使用してください! |
事前の最適化
この章では、Spring の事前最適化を基盤とした Spring Data の Ahead of Time (AOT) 最適化について説明します。
事前コード生成
事前コード生成は、GraalVM Native Image での使用に限定されず、通常の デプロイで作業する場合にも利点があり、JVM での起動パフォーマンスの最適化に役立ちます。
Ahead of Time コンパイルが有効になっている場合、Spring Data は (実際に使用されているモジュールに応じて) ビルドの AOT フェーズ中にいくつかのコンポーネントを提供できます。
生成された型 / プロパティアクセサーのバイトコード
定義されたリポジトリインターフェースのソースコード
JSON 形式のリポジトリメタデータ
上記の各機能はデフォルトで有効になっています。ただし、ユーザーは以下のオプションを使用して設定を微調整できます。
| 生成された型 / プロパティアクセサーのバイトコードのコントリビュートを制御するブールフラグ |
| 生成された型 / プロパティアクセサーのバイトコードを提供する FQCN のカンマ区切りリスト。パッケージ名(例: |
| 生成された型 / プロパティアクセサーのバイトコード提供をスキップする FQCN のカンマ区切りリスト。パッケージ名(例: |
| リポジトリインターフェースのソースコードのコントリビュートを制御するブールフラグ |
| 特定のモジュールのリポジトリインターフェースのソースコードのコントリビュートを制御するブールフラグ (例: |
事前リポジトリ
AOT リポジトリは、適切なクエリメソッド実装を事前に生成することで AOT 処理を拡張するものです。クエリメソッドは、その呼び出しで実行されるクエリについて開発者には不透明です。AOT リポジトリは、ビルド時に既知の派生クエリ、アノテーション付きクエリ、名前付きクエリに基づいて、クエリメソッド実装を提供します。この最適化により、クエリメソッド処理が実行時からビルド時へと移行されます。これにより、アプリケーションの起動時にクエリメソッドをリフレクション的に分析する必要がなくなり、パフォーマンスが大幅に向上します。
結果として得られる AOT リポジトリフラグメントは、<Repository FQCN>Impl_AotRepository の命名スキームに従い、リポジトリインターフェースと同じパッケージに配置されます。
ネイティブイメージランタイムのヒント
アプリケーションをネイティブイメージとして実行するには、通常の JVM ランタイムに比べて追加の情報が必要です。Spring Data は、ネイティブイメージの使用に関する AOT 処理中に実行時のヒントを提供します。これらは特に、以下の点に関するヒントです。
監査
クラスパススキャンの結果をキャプチャーするための
ManagedTypesリポジトリ
エンティティ、戻り値の型、Spring Data アノテーションのリフレクションヒント
リポジトリフラグメント
Querydsl
QクラスKotlin コルーチンサポート
Web サポート (Jackson の
PagedModelのヒント)