アノテーションインターフェース 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 enum
SQL ステートメントの実行中にエラーを処理する方法を指示するモードの列挙。static enum
SQL スクリプトをトランザクション内で実行する必要があるかどうか、およびトランザクションの伝播動作を指定するモードの列挙。オプション要素のサマリー
修飾子と型オプションの要素説明SQL スクリプト内のブロックコメントを識別する終了区切り文字。SQL スクリプト内のブロックコメントを識別する開始区切り文字。SQL スクリプト内の単一行コメントを識別するプレフィックス。StringSE[]
SQL スクリプト内の単一行コメントを識別するプレフィックス。スクリプトが実行されるDataSource
SE の Bean 名。プラットフォームエンコーディングと異なる場合、提供された SQL スクリプトのエンコーディング。SQL ステートメントの実行中にエラーが発生したときに使用するモード。SQL スクリプト内の個々のステートメントを区切るために使用される文字列。トランザクションを駆動するために使用されるPlatformTransactionManager
の Bean 名。トランザクション内で SQL スクリプトを実行するかどうかを決定するときに使用するモード。
要素の詳細
dataSource
StringSE dataSourceスクリプトが実行されるDataSource
SE の Bean 名。この名前は、テストの
ApplicationContext
に型DataSource
の Bean が複数ある場合にのみ必要です。そのような Bean が 1 つしかない場合、Bean 名を指定する必要はありません。デフォルトは空の文字列で、次のいずれかに該当する必要があります。
- 明示的な Bean 名は、
@SqlConfig
のグローバル宣言で定義されています。 - リフレクションを使用して、トランザクションマネージャーで
getDataSource()
という名前の public メソッドを呼び出すことにより、トランザクションマネージャーからデータソースを取得できます。 - テストの
ApplicationContext
には、型DataSource
の Bean が 1 つだけあります。 - 使用する
DataSource
の名前は"dataSource"
です。
- デフォルト:
- ""
- 明示的な Bean 名は、
transactionManager
StringSE transactionManagerトランザクションを駆動するために使用されるPlatformTransactionManager
の Bean 名。この名前は、テストの
ApplicationContext
に型PlatformTransactionManager
の Bean が複数ある場合にのみ使用されます。そのような Bean が 1 つしかない場合、Bean 名を指定する必要はありません。デフォルトは空の文字列で、次のいずれかに該当する必要があります。
- 明示的な Bean 名は、
@SqlConfig
のグローバル宣言で定義されています。 - テストの
ApplicationContext
には、型PlatformTransactionManager
の Bean が 1 つだけあります。 TransactionManagementConfigurer
は、どのPlatformTransactionManager
Bean をアノテーション駆動のトランザクション管理に使用するかを指定するために実装されました。- 使用する
PlatformTransactionManager
の名前は"transactionManager"
です。
- デフォルト:
- ""
- 明示的な Bean 名は、
transactionMode
SqlConfig.TransactionMode transactionModeトランザクション内で SQL スクリプトを実行するかどうかを決定するときに使用するモード。デフォルトは
DEFAULT
です。SqlConfig.TransactionMode.ISOLATED
に設定すると、すぐにコミットされる新しい分離トランザクションで SQL スクリプトが確実に実行されます。- デフォルト:
- DEFAULT
encoding
StringSE encodingプラットフォームエンコーディングと異なる場合、提供された SQL スクリプトのエンコーディング。空の文字列は、プラットフォームエンコーディングを使用する必要があることを示します。
- デフォルト:
- ""
separator
StringSE separatorSQL スクリプト内の個々のステートメントを区切るために使用される文字列。指定しない場合は暗黙的に
";"
にデフォルト設定され、最後の手段として"\n"
にフォールバックします。ScriptUtils.EOF_STATEMENT_SEPARATOR
に設定して、各スクリプトに区切りなしの単一のステートメントが含まれていることを通知できます。- デフォルト:
- ""
commentPrefix
StringSE commentPrefixSQL スクリプト内の単一行コメントを識別するプレフィックス。暗黙的に
"--"
がデフォルトになります。この属性は、
commentPrefixes
と組み合わせて使用することはできませんが、commentPrefixes
の代わりに使用することができます。- デフォルト:
- ""
commentPrefixes
StringSE[] commentPrefixesSQL スクリプト内の単一行コメントを識別するプレフィックス。暗黙的に
["--"]
がデフォルトになります。この属性は、
commentPrefix
と組み合わせて使用することはできませんが、commentPrefix
の代わりに使用することができます。- デフォルト:
- {}
blockCommentStartDelimiter
StringSE blockCommentStartDelimiterSQL スクリプト内のブロックコメントを識別する開始区切り文字。暗黙的に
"/*"
がデフォルトになります。- デフォルト:
- ""
blockCommentEndDelimiter
StringSE blockCommentEndDelimiterSQL スクリプト内のブロックコメントを識別する終了区切り文字。暗黙的に
"*/"
がデフォルトになります。- デフォルト:
- ""
errorMode
SqlConfig.ErrorMode errorModeSQL ステートメントの実行中にエラーが発生したときに使用するモード。デフォルトは
DEFAULT
です。- 関連事項:
- デフォルト:
- DEFAULT