@TargetSE(valueSE=TYPESE) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE @InheritedSE public @interface SqlConfig
@SqlConfig
は、@Sql
アノテーションを介して構成された SQL スクリプトを解析および実行する方法を決定するために使用されるメタデータを定義します。 統合テストクラスでクラスレベルのアノテーションとして宣言されると、@SqlConfig
はテストクラス階層内のすべての SQL スクリプトのグローバル構成として機能します。@Sql
アノテーションの config
属性を介して直接宣言された場合、@SqlConfig
は、囲む @Sql
アノテーション内で宣言された SQL スクリプトのローカル構成として機能します。
@SqlConfig
のすべての属性には、対応する属性の javadoc に記載されている暗黙のデフォルト値があります。Java 言語仕様でアノテーション属性に定義されている規則により、残念ながら、null
の値をアノテーション属性に割り当てることはできません。継承されたグローバル構成のオーバーライドをサポートするために、@SqlConfig
属性には、文字列の場合は ""
、配列の場合は {}
、列挙型の場合は DEFAULT
のいずれかの明示的な default
値があります。このアプローチにより、@SqlConfig
のローカル宣言は、""
、{}
、DEFAULT
以外の値を提供することにより、@SqlConfig
のグローバル宣言から個々の属性を選択的にオーバーライドできます。
グローバル @SqlConfig
属性は、ローカル @SqlConfig
属性が ""
、{}
、DEFAULT
以外の明示的な値を提供しない場合は常に継承されます。明示的なローカル構成はグローバル構成をオーバーライドします。
Sql
修飾子と型 | オプションの要素と説明 |
---|---|
StringSE | blockCommentEndDelimiter SQL スクリプト内のブロックコメントを識別する終了区切り文字。 |
StringSE | blockCommentStartDelimiter SQL スクリプト内のブロックコメントを識別する開始区切り文字。 |
StringSE | commentPrefix SQL スクリプト内の単一行コメントを識別するプレフィックス。 |
StringSE[] | commentPrefixes SQL スクリプト内の単一行コメントを識別するプレフィックス。 |
StringSE | dataSource スクリプトが実行される DataSource SE の Bean 名。 |
StringSE | encoding プラットフォームエンコーディングと異なる場合、提供された SQL スクリプトのエンコーディング。 |
SqlConfig.ErrorMode | errorMode SQL ステートメントの実行中にエラーが発生したときに使用するモード。 |
StringSE | separator SQL スクリプト内の個々のステートメントを区切るために使用される文字列。 |
StringSE | transactionManager トランザクションを駆動するために使用される PlatformTransactionManager の Bean 名。 |
SqlConfig.TransactionMode | transactionMode トランザクション内で SQL スクリプトを実行するかどうかを決定するときに使用するモード。 |
public abstract StringSE dataSource
DataSource
SE の Bean 名。 この名前は、テストの ApplicationContext
に型 DataSource
の Bean が複数ある場合にのみ必要です。そのような Bean が 1 つしかない場合、Bean 名を指定する必要はありません。
デフォルトは空の文字列で、次のいずれかに該当する必要があります。
@SqlConfig
のグローバル宣言で定義されています。getDataSource()
という名前の public メソッドを呼び出すことにより、トランザクションマネージャーからデータソースを取得できます。ApplicationContext
には、型 DataSource
の Bean が 1 つだけあります。DataSource
の名前は "dataSource"
です。public abstract StringSE transactionManager
PlatformTransactionManager
の Bean 名。 この名前は、テストの ApplicationContext
に型 PlatformTransactionManager
の Bean が複数ある場合にのみ使用されます。そのような Bean が 1 つしかない場合、Bean 名を指定する必要はありません。
デフォルトは空の文字列で、次のいずれかに該当する必要があります。
@SqlConfig
のグローバル宣言で定義されています。ApplicationContext
には、型 PlatformTransactionManager
の Bean が 1 つだけあります。TransactionManagementConfigurer
は、どの PlatformTransactionManager
Bean をアノテーション駆動のトランザクション管理に使用するかを指定するために実装されました。PlatformTransactionManager
の名前は "transactionManager"
です。public abstract SqlConfig.TransactionMode transactionMode
デフォルトは DEFAULT
です。
SqlConfig.TransactionMode.ISOLATED
に設定すると、すぐにコミットされる新しい分離トランザクションで SQL スクリプトが確実に実行されます。
public abstract StringSE encoding
空の文字列は、プラットフォームエンコーディングを使用する必要があることを示します。
public abstract StringSE separator
指定しない場合は暗黙的に ";"
にデフォルト設定され、最後の手段として "\n"
にフォールバックします。
ScriptUtils.EOF_STATEMENT_SEPARATOR
に設定して、各スクリプトに区切りなしの単一のステートメントが含まれていることを通知できます。
public abstract StringSE commentPrefix
暗黙的に "--"
がデフォルトになります。
この属性は、commentPrefixes
と組み合わせて使用することはできませんが、commentPrefixes
の代わりに使用することができます。
public abstract StringSE[] commentPrefixes
暗黙的に ["--"]
がデフォルトになります。
この属性は、commentPrefix
と組み合わせて使用することはできませんが、commentPrefix
の代わりに使用することができます。
ScriptUtils.DEFAULT_COMMENT_PREFIXES
, commentPrefix()
public abstract StringSE blockCommentStartDelimiter
暗黙的に "/*"
がデフォルトになります。
public abstract StringSE blockCommentEndDelimiter
暗黙的に "*/"
がデフォルトになります。
public abstract SqlConfig.ErrorMode errorMode
デフォルトは DEFAULT
です。
SqlConfig.ErrorMode