アノテーションインターフェース SqlConfig
@SqlConfig は、@Sql アノテーションを介して構成された SQL スクリプトを解析および実行する方法を決定するために使用されるメタデータを定義します。構成スコープ
 統合テストクラスでクラスレベルのアノテーションとして宣言されると、@SqlConfig はテストクラス階層内のすべての SQL スクリプトのグローバル構成として機能します。@Sql アノテーションの config 属性を介して直接宣言された場合、@SqlConfig は、囲む @Sql アノテーション内で宣言された SQL スクリプトのローカル構成として機能します。
デフォルト値
@SqlConfig のすべての属性には、対応する属性の javadoc に記載されている暗黙のデフォルト値があります。Java 言語仕様でアノテーション属性に定義されている規則により、残念ながら、null の値をアノテーション属性に割り当てることはできません。継承されたグローバル構成のオーバーライドをサポートするために、@SqlConfig 属性には、文字列の場合は ""、配列の場合は {}、列挙型の場合は DEFAULT のいずれかの明示的な default 値があります。このアプローチにより、@SqlConfig のローカル宣言は、""、{}、DEFAULT 以外の値を提供することにより、@SqlConfig のグローバル宣言から個々の属性を選択的にオーバーライドできます。
継承とオーバーライド
 グローバル @SqlConfig 属性は、ローカル @SqlConfig 属性が ""、{}、DEFAULT 以外の明示的な値を提供しない場合は常に継承されます。明示的なローカル構成はグローバル構成をオーバーライドします。
Spring Framework 5.3 以降、このアノテーションはデフォルトでそれを囲むテストクラスから継承されます。詳細については、@NestedTestConfiguration を参照してください。
- 導入:
- 4.1
- 作成者:
- Sam Brannen, Tadaya Tsuyukubo
- 関連事項:
- ネストされたクラスの要約ネストされたクラス修飾子と型クラス説明- static enumSQL ステートメントの実行中にエラーを処理する方法を指示するモードの列挙。- static enumSQL スクリプトをトランザクション内で実行する必要があるかどうか、およびトランザクションの伝播動作を指定するモードの列挙。
- オプション要素の概要オプション要素修飾子と型オプションの要素説明SQL スクリプト内のブロックコメントを識別する終了区切り文字。SQL スクリプト内のブロックコメントを識別する開始区切り文字。SQL スクリプト内の単一行コメントを識別するプレフィックス。- StringSE[]SQL スクリプト内の単一行コメントを識別するプレフィックス。スクリプトが実行される- DataSourceSE の Bean 名。プラットフォームエンコーディングと異なる場合、提供された SQL スクリプトのエンコーディング。SQL ステートメントの実行中にエラーが発生したときに使用するモード。SQL スクリプト内の個々のステートメントを区切るために使用される文字列。トランザクションを駆動するために使用される- PlatformTransactionManagerの Bean 名。トランザクション内で SQL スクリプトを実行するかどうかを決定するときに使用するモード。
- 要素の詳細- dataSourceStringSE dataSourceスクリプトが実行される- DataSourceSE の Bean 名。- この名前は、テストの - ApplicationContextに型- DataSourceの Bean が複数ある場合にのみ必要です。そのような Bean が 1 つしかない場合、Bean 名を指定する必要はありません。- デフォルトは空の文字列で、次のいずれかに該当する必要があります。 - 明示的な Bean 名は、@SqlConfigのグローバル宣言で定義されています。
- リフレクションを使用して、トランザクションマネージャーで getDataSource()という名前の public メソッドを呼び出すことにより、トランザクションマネージャーからデータソースを取得できます。
- テストの ApplicationContextには、型DataSourceの Bean が 1 つだけあります。
-  使用する DataSourceの名前は"dataSource"です。
 - デフォルト:
- ""
 
- 明示的な Bean 名は、
- transactionManagerStringSE transactionManagerトランザクションを駆動するために使用される- PlatformTransactionManagerの Bean 名。- この名前は、テストの - ApplicationContextに型- PlatformTransactionManagerの Bean が複数ある場合にのみ使用されます。そのような Bean が 1 つしかない場合、Bean 名を指定する必要はありません。- デフォルトは空の文字列で、次のいずれかに該当する必要があります。 - 明示的な Bean 名は、@SqlConfigのグローバル宣言で定義されています。
- テストの ApplicationContextには、型PlatformTransactionManagerの Bean が 1 つだけあります。
- TransactionManagementConfigurerは、どの- PlatformTransactionManagerBean をアノテーション駆動のトランザクション管理に使用するかを指定するために実装されました。
-  使用する PlatformTransactionManagerの名前は"transactionManager"です。
 - デフォルト:
- ""
 
- 明示的な Bean 名は、
- transactionModeSqlConfig.TransactionMode transactionModeトランザクション内で SQL スクリプトを実行するかどうかを決定するときに使用するモード。- デフォルトは - DEFAULTです。- SqlConfig.TransactionMode.ISOLATEDに設定すると、すぐにコミットされる新しい分離トランザクションで SQL スクリプトが確実に実行されます。- デフォルト:
- DEFAULT
 
- encodingStringSE encodingプラットフォームエンコーディングと異なる場合、提供された SQL スクリプトのエンコーディング。- 空の文字列は、プラットフォームエンコーディングを使用する必要があることを示します。 - デフォルト:
- ""
 
- separatorStringSE separatorSQL スクリプト内の個々のステートメントを区切るために使用される文字列。- 指定しない場合は暗黙的に - ";"にデフォルト設定され、最後の手段として- "\n"にフォールバックします。- ScriptUtils.EOF_STATEMENT_SEPARATORに設定して、各スクリプトに区切りなしの単一のステートメントが含まれていることを通知できます。- デフォルト:
- ""
 
- commentPrefixStringSE commentPrefixSQL スクリプト内の単一行コメントを識別するプレフィックス。- 暗黙的に - "--"がデフォルトになります。- この属性は、 - commentPrefixesと組み合わせて使用することはできませんが、- commentPrefixesの代わりに使用することができます。- デフォルト:
- ""
 
- commentPrefixesStringSE[] commentPrefixesSQL スクリプト内の単一行コメントを識別するプレフィックス。- 暗黙的に - ["--"]がデフォルトになります。- この属性は、 - commentPrefixと組み合わせて使用することはできませんが、- commentPrefixの代わりに使用することができます。- デフォルト:
- {}
 
- blockCommentStartDelimiterStringSE blockCommentStartDelimiterSQL スクリプト内のブロックコメントを識別する開始区切り文字。- 暗黙的に - "/*"がデフォルトになります。- デフォルト:
- ""
 
- blockCommentEndDelimiterStringSE blockCommentEndDelimiterSQL スクリプト内のブロックコメントを識別する終了区切り文字。- 暗黙的に - "*/"がデフォルトになります。- デフォルト:
- ""
 
- errorModeSqlConfig.ErrorMode errorModeSQL ステートメントの実行中にエラーが発生したときに使用するモード。- デフォルトは - DEFAULTです。- 関連事項:
 - デフォルト:
- DEFAULT