アノテーションインターフェース ContextConfiguration


@TargetSE(TYPESE) @RetentionSE(RUNTIMESE) @DocumentedSE @InheritedSE public @interface ContextConfiguration
@ContextConfiguration は、統合テスト用に ApplicationContext をロードおよび構成する方法を決定するために使用されるクラスレベルのメタデータを定義します。

サポートされているリソース型

コンテキストローダーは、パスベースのリソースの場所 (通常は XML 構成ファイル) またはクラスベースのリソースのいずれかをサポートすることを選択できます。あるいは、コンテキストローダーは、パスベースクラスベースのリソースを同時にサポートすることを選択できます。@ContextConfiguration を使用して、パスベースのリソースの場所 (locations() または value() 属性を使用) またはコンポーネントクラス (classes() 属性を使用) を宣言できます。ただし、SmartContextLoader のほとんどの実装では、1 つのリソース型しかサポートされないことに注意してください。パスベースのリソースの場所は、XML 構成ファイルまたは Groovy スクリプトのいずれかです (Groovy がクラスパスにある場合)。もちろん、サードパーティのフレームワークは、追加の種類のパスベースのリソースをサポートすることを選択する場合があります。

コンポーネントクラス

コンポーネントクラスという用語は、次のいずれかを指します。

  • @Configuration アノテーションが付けられたクラス
  • コンポーネント (つまり、@Component@Service@Repository などのアノテーションが付けられたクラスです。)
  • jakarta.inject アノテーションが付けられた JSR-330 準拠のクラス
  • @Bean -methods を含むすべてのクラス
  • Spring コンポーネント(つまり、ApplicationContext の Spring Bean)として登録することを目的とするその他のクラス。潜在的に Spring アノテーションを使用せずに単一のコンストラクターの自動オートワイヤーを利用します。
Bean は各コンポーネントクラスの ApplicationContext に登録されるため、そのような Bean は他の Bean またはテストクラスのインスタンスに注入できます。

コンポーネントクラスの設定とセマンティクスに関する詳細については、@Configuration および @Bean の Javadoc を参照してください。

このアノテーションは、カスタム構成アノテーションを作成するためのメタアノテーションとして使用することができます。

Spring Framework 5.3 以降、このアノテーションはデフォルトでそれを囲むテストクラスから継承されます。詳細については、@NestedTestConfiguration を参照してください。

導入:
2.5
作成者:
Sam Brannen
関連事項:
  • 要素の詳細

    • value

      @AliasFor("locations") StringSE[] value
      locations() のエイリアス。

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

      導入:
      3.0
      関連事項:
      デフォルト:
      {}
    • locations

      @AliasFor("value") StringSE[] locations
      ApplicationContext のロードに使用するリソースの場所。

      特に相対パスの場合に、実行時に場所がどのように解釈されるかについての詳細は、AbstractContextLoader.modifyLocations() の Javadoc を確認してください。また、指定されていない場合に使用されるデフォルトの場所の詳細については、AbstractContextLoader.generateDefaultLocations() のドキュメントを参照してください。

      前述のデフォルトルールは、locations が設定されている場合に実行時に使用される効果的なデフォルト実装である GenericXmlContextLoaderGenericGroovyXmlContextLoader などの標準 AbstractContextLoader サブクラスにのみ適用されることに注意してください。デフォルトローダーの詳細については、loader() のドキュメントを参照してください。

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

      導入:
      2.5
      関連事項:
      デフォルト:
      {}
    • classes

      ClassSE<?>[] classes
      ApplicationContext のロードに使用するコンポーネントクラス

      コンポーネントクラスが指定されていない場合のデフォルト構成クラスの検出方法の詳細については、AnnotationConfigContextLoader.detectDefaultConfigurationClasses() の javadoc を確認してください。デフォルトローダーの詳細については、loader() のドキュメントを参照してください。

      導入:
      3.1
      関連事項:
      デフォルト:
      {}
    • initializers

      ClassSE<? extends ApplicationContextInitializer<?>>[] initializers
      ConfigurableApplicationContext の初期化に使用するアプリケーションコンテキスト初期化子クラス

      宣言された各イニシャライザーによってサポートされる具体的な ConfigurableApplicationContext 型は、使用中の SmartContextLoader によって作成された ApplicationContext の型と互換性がなければなりません。

      SmartContextLoader 実装は通常、Spring の Ordered インターフェースが実装されているかどうか、@Order アノテーションが存在するかどうかを検出し、呼び出す前にインスタンスをソートします。

      導入:
      3.2
      関連事項:
      デフォルト:
      {}
    • inheritLocations

      boolean inheritLocations
      テストスーパークラスおよびエンクロージングクラスからのリソースの場所またはコンポーネントクラス継承するかどうか。

      デフォルト値は true です。これは、アノテーション付きのテストクラスが、テストスーパークラスとそれを囲むクラスによって定義されたリソースの場所またはコンポーネントクラスを継承することを意味します。具体的には、特定のテストクラスのリソースの場所またはコンポーネントクラスが、テストスーパークラスおよびそれを囲むクラスによって定義されたリソースの場所またはコンポーネントクラスのリストに追加されます。サブクラスとネストされたクラスには、リソースの場所またはコンポーネントクラスのリストを拡張するオプションがあります。

      inheritLocations が false に設定されている場合、アノテーション付きテストクラスのリソースの場所またはコンポーネントクラスは、スーパークラスおよびそれを囲むクラスによって定義されたリソースの場所またはコンポーネントクラスをシャドウイングして効果的に置き換えます。

      パスベースのリソースロケーションを使用する次の例では、ExtendedTest の ApplicationContext が "base-context.xml" および "extended-context.xml" からこの順序でロードされます。"extended-context.xml" で定義された Bean は、"base-context.xml" で定義された Bean をオーバーライドできます。

       @ContextConfiguration("base-context.xml")
       public class BaseTest {
           // ...
       }
      
       @ContextConfiguration("extended-context.xml")
       public class ExtendedTest extends BaseTest {
           // ...
       }
       

      同様に、コンポーネントクラスを使用する次の例では、ExtendedTest の ApplicationContext が BaseConfig および ExtendedConfig 構成クラスからこの順序でロードされます。ExtendedConfig で定義された Bean は、BaseConfig で定義された Bean をオーバーライドできます。

       @ContextConfiguration(classes=BaseConfig.class)
       public class BaseTest {
           // ...
       }
      
       @ContextConfiguration(classes=ExtendedConfig.class)
       public class ExtendedTest extends BaseTest {
           // ...
       }
       
      導入:
      2.5
      デフォルト:
      true
    • inheritInitializers

      boolean inheritInitializers
      テストスーパークラスおよびそれを囲むクラスからのコンテキスト初期化子継承する必要があるかどうか。

      デフォルト値は true です。これは、アノテーション付きのテストクラスが、テストスーパークラスとそれを囲むクラスによって定義されたアプリケーションコンテキスト初期化子を継承することを意味します。具体的には、特定のテストクラスの初期化子は、テストスーパークラスとそれを囲むクラスによって定義された初期化子のセットに追加されます。サブクラスとネストされたクラスには、初期化子のセットを拡張するオプションがあります。

      inheritInitializers が false に設定されている場合、アノテーション付きテストクラスの初期化子はシャドウになり、スーパークラスとそれを囲むクラスによって定義された初期化子を効果的に置き換えます。

      次の例では、ExtendedTest の ApplicationContext は、BaseInitializer および ExtendedInitializer を使用して初期化されます。ただし、イニシャライザーが呼び出される順序は、イニシャライザーが Ordered を実装しているか、@Order でアノテーションが付けられているかによって異なることに注意してください。

       @ContextConfiguration(initializers = BaseInitializer.class)
       public class BaseTest {
           // ...
       }
      
       @ContextConfiguration(initializers = ExtendedInitializer.class)
       public class ExtendedTest extends BaseTest {
           // ...
       }
       
      導入:
      3.2
      デフォルト:
      true
    • loader

      ClassSE<? extends ContextLoader> loader
      ApplicationContext のロードに使用する SmartContextLoader(または ContextLoader)の型。

      指定しない場合、ローダーは、@ContextConfiguration でアノテーションが付けられた、またはメタアノテーションが付けられ、明示的なローダーを指定する最初のスーパークラスまたはそれを囲むクラスから継承されます。型階層またはそれを囲むクラス階層に明示的なローダーが指定されていない場合は、代わりにデフォルトのローダーが使用されます。

      実行時に選択されるデフォルトの具象実装は、@WebAppConfiguration の有無に応じて DelegatingSmartContextLoader または WebDelegatingSmartContextLoader になります。さまざまな具象 SmartContextLoaders のデフォルトの動作の詳細については、Javadoc で AbstractContextLoaderGenericXmlContextLoaderGenericGroovyXmlContextLoaderAnnotationConfigContextLoaderGenericXmlWebContextLoaderGenericGroovyXmlWebContextLoaderAnnotationConfigWebContextLoader を確認してください。

      導入:
      2.5
      デフォルト:
      org.springframework.test.context.ContextLoader.class
    • name

      StringSE name
      この構成で表されるコンテキスト階層レベルの名前。

      指定しない場合、名前は、階層内で宣言されたすべてのコンテキスト内の数値レベルに基づいて推測されます。

      この属性は、@ContextHierarchy を使用して構成されたテストクラス階層または囲みクラス階層内で使用される場合にのみ適用されます。この場合、この名前は、スーパークラスまたは囲みで定義された階層レベルの同じ名前の構成とこの構成をマージまたはオーバーライドするために使用できます。クラス。詳細については、@ContextHierarchy の Javadoc を参照してください。

      導入:
      3.2.2
      デフォルト:
      ""