アノテーションインターフェース 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 スクリプト内の単一行コメントを識別するプレフィックス。
    SQL スクリプト内の単一行コメントを識別するプレフィックス。
    スクリプトが実行される DataSourceSE の Bean 名。
    プラットフォームエンコーディングと異なる場合、提供された SQL スクリプトのエンコーディング。
    SQL ステートメントの実行中にエラーが発生したときに使用するモード
    SQL スクリプト内の個々のステートメントを区切るために使用される文字列。
    トランザクションを駆動するために使用される PlatformTransactionManager の Bean 名。
    トランザクション内で SQL スクリプトを実行するかどうかを決定するときに使用するモード
  • 要素の詳細

    • dataSource

      StringSE dataSource
      スクリプトが実行される DataSourceSE の Bean 名。

      この名前は、テストの ApplicationContext に型 DataSource の Bean が複数ある場合にのみ必要です。そのような Bean が 1 つしかない場合、Bean 名を指定する必要はありません。

      デフォルトは空の文字列で、次のいずれかに該当する必要があります。

      1. 明示的な Bean 名は、@SqlConfig のグローバル宣言で定義されています。
      2. リフレクションを使用して、トランザクションマネージャーで getDataSource() という名前の public メソッドを呼び出すことにより、トランザクションマネージャーからデータソースを取得できます。
      3. テストの ApplicationContext には、型 DataSource の Bean が 1 つだけあります。
      4. 使用する DataSource の名前は "dataSource" です。
      関連事項:
      デフォルト:
      ""
    • transactionManager

      StringSE transactionManager
      トランザクションを駆動するために使用される PlatformTransactionManager の Bean 名。

      この名前は、テストの ApplicationContext に型 PlatformTransactionManager の Bean が複数ある場合にのみ使用されます。そのような Bean が 1 つしかない場合、Bean 名を指定する必要はありません。

      デフォルトは空の文字列で、次のいずれかに該当する必要があります。

      1. 明示的な Bean 名は、@SqlConfig のグローバル宣言で定義されています。
      2. テストの ApplicationContext には、型 PlatformTransactionManager の Bean が 1 つだけあります。
      3. TransactionManagementConfigurer は、どの PlatformTransactionManager Bean をアノテーション駆動のトランザクション管理に使用するかを指定するために実装されました。
      4. 使用する PlatformTransactionManager の名前は "transactionManager" です。
      関連事項:
      デフォルト:
      ""
    • transactionMode

      SqlConfig.TransactionMode transactionMode
      トランザクション内で SQL スクリプトを実行するかどうかを決定するときに使用するモード

      デフォルトは DEFAULT です。

      SqlConfig.TransactionMode.ISOLATED に設定すると、すぐにコミットされる新しい分離トランザクションで SQL スクリプトが確実に実行されます。

      関連事項:
      デフォルト:
      DEFAULT
    • encoding

      StringSE encoding
      プラットフォームエンコーディングと異なる場合、提供された SQL スクリプトのエンコーディング。

      空の文字列は、プラットフォームエンコーディングを使用する必要があることを示します。

      デフォルト:
      ""
    • separator

      StringSE separator
      SQL スクリプト内の個々のステートメントを区切るために使用される文字列。

      指定しない場合は暗黙的に ";" にデフォルト設定され、最後の手段として "\n" にフォールバックします。

      ScriptUtils.EOF_STATEMENT_SEPARATOR に設定して、各スクリプトに区切りなしの単一のステートメントが含まれていることを通知できます。

      関連事項:
      デフォルト:
      ""
    • commentPrefix

      StringSE commentPrefix
      SQL スクリプト内の単一行コメントを識別するプレフィックス。

      暗黙的に "--" がデフォルトになります。

      この属性は、commentPrefixes と組み合わせて使用することはできませんが、commentPrefixes の代わりに使用することができます。

      関連事項:
      デフォルト:
      ""
    • commentPrefixes

      StringSE[] commentPrefixes
      SQL スクリプト内の単一行コメントを識別するプレフィックス。

      暗黙的に ["--"] がデフォルトになります。

      この属性は、commentPrefix と組み合わせて使用することはできませんが、commentPrefix の代わりに使用することができます。

      導入:
      5.2
      関連事項:
      デフォルト:
      {}
    • blockCommentStartDelimiter

      StringSE blockCommentStartDelimiter
      SQL スクリプト内のブロックコメントを識別する開始区切り文字。

      暗黙的に "/*" がデフォルトになります。

      関連事項:
      デフォルト:
      ""
    • blockCommentEndDelimiter

      StringSE blockCommentEndDelimiter
      SQL スクリプト内のブロックコメントを識別する終了区切り文字。

      暗黙的に "*/" がデフォルトになります。

      関連事項:
      デフォルト:
      ""
    • errorMode

      SQL ステートメントの実行中にエラーが発生したときに使用するモード

      デフォルトは DEFAULT です。

      関連事項:
      デフォルト:
      DEFAULT