クラス TestContextAnnotationUtils

java.lang.ObjectSE
org.springframework.test.context.TestContextAnnotationUtils

public abstract class TestContextAnnotationUtils extends ObjectSE
TestContextAnnotationUtils は、@NestedTestConfiguration セマンティクスを透過的に尊重しながら、AnnotationUtils および AnnotatedElementUtils ですでに利用可能な標準サポートを補完するユーティリティメソッドのコレクションです。

主に Spring TestContext フレームワーク内での内部使用。

AnnotationUtils および AnnotatedElementUtils はアノテーションを取得または検索するためのユーティリティを提供しますが、TestContextAnnotationUtils は、構成されたアノテーションを介して直接的または間接的に、アノテーションが宣言されているルートクラスを決定するためのサポートを提供することでさらに一歩進んでいます。この追加情報は TestContextAnnotationUtils.AnnotationDescriptor にカプセル化されています。

AnnotationDescriptor によって提供される追加情報は、Spring TestContext フレームワークが、さまざまな継承されたアノテーション属性のマージとオーバーライドをサポートする @ContextConfiguration@TestExecutionListeners@ActiveProfiles などのアノテーションのクラス継承とクラス階層トラバーサルの囲みをサポートできるようにするために必要です。たとえば、ContextConfiguration.inheritLocations() です。

導入:
5.3、もともと 4.0 以来 org.springframework.test.util.MetaAnnotationUtils として
作成者:
Sam Brannen
関連事項:
  • コンストラクターの詳細

    • TestContextAnnotationUtils

      public TestContextAnnotationUtils()
  • メソッドの詳細

    • hasAnnotation

      public static boolean hasAnnotation(ClassSE<?> clazz, ClassSE<? extends AnnotationSE> annotationType)
      findMergedAnnotation(Class, Class) で使用されている検索アルゴリズムに従って、指定された annotationType のアノテーションが提供された ClassSE に存在するかメタ存在であるかを判別します。

      このメソッドが true を返す場合、findMergedAnnotation(...) は null 以外の値を返します。

      パラメーター:
      clazz - アノテーションを探すクラス
      annotationType - 検索するアノテーションの型
      戻り値:
      一致するアノテーションが存在する場合は true 
      導入:
      5.3.3
      関連事項:
    • findMergedAnnotation

      @Nullable public static <T extends AnnotationSE> T findMergedAnnotation(ClassSE<?> clazz, ClassSE<T> annotationType)
      指定されたクラスののアノテーション階層内で指定された annotationType の最初のアノテーションを見つけ、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションからの一致する属性とマージし、結果を合成して指定された annotationType のアノテーションに戻します。

      このメソッドのコンテキストでは、「上」という用語は、スーパークラス階層内、または提供されたクラスのそれを囲むクラス階層内を意味します。囲んでいるクラス階層は、@NestedTestConfiguration セマンティクスに従ってのみ検索されます。

      @AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。

      パラメーター:
      clazz - アノテーションを探すクラス
      annotationType - 検索するアノテーションの型
      戻り値:
      マージ、合成された Annotation、見つからない場合は null 
      関連事項:
    • getMergedRepeatableAnnotations

      public static <T extends AnnotationSE> SetSE<T> getMergedRepeatableAnnotations(ClassSE<?> clazz, ClassSE<T> annotationType)
      指定されたクラスののアノテーション階層内で、指定された annotationType のすべての繰り返し可能なアノテーションを取得します。見つかったアノテーションごとに、そのアノテーションの属性を、アノテーション階層の下位レベルにあるアノテーションの一致する属性とマージし、結果を合成して、指定された annotationType のアノテーションに戻します。

      このメソッドは、提供されたクラスに繰り返し可能なアノテーションのローカル宣言がない場合、スーパークラスで宣言された @InheritedSE アノテーションを検索します。継承されたアノテーションが見つからない場合、このメソッドは、指定されたクラスの囲んでいるクラス階層内を検索します。囲んでいるクラス階層は、@NestedTestConfiguration セマンティクスに従ってのみ検索されます。

      繰り返し可能なアノテーションを保持するコンテナー型は、RepeatableSE を介して検索されます。

      @AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。

      パラメーター:
      clazz - アノテーションを検索するクラス (非 null)
      annotationType - 検索するアノテーション型 (非 null)
      戻り値:
      マージされた繰り返し可能なアノテーションのセットが見つかった場合、または何も見つからなかった場合は空のセット
      関連事項:
    • findAnnotationDescriptor

      @Nullable public static <T extends AnnotationSE> TestContextAnnotationUtils.AnnotationDescriptor<T> findAnnotationDescriptor(ClassSE<?> clazz, ClassSE<T> annotationType)
      提供された ClassSE で提供された annotationType の TestContextAnnotationUtils.AnnotationDescriptor を見つけ、そのアノテーション、インターフェース、スーパークラスをトラバースし、指定されたクラス自体にアノテーションが見つからない場合はクラスを囲みます。

      このメソッドは、継承SE として宣言されていないクラスレベルのアノテーションとメタアノテーションを明示的に処理します。

      アルゴリズムは次のように動作します。

      1. 指定されたクラスのアノテーションを検索し、見つかった場合は対応する AnnotationDescriptor を返します。
      2. 指定されたクラスが宣言するすべてのアノテーションを再帰的に検索します。
      3. 指定されたクラスによって実装されたすべてのインターフェースを再帰的に検索します。
      4. 指定されたクラスのスーパークラス階層を再帰的に検索します。
      5. 必要に応じて、@NestedTestConfiguration セマンティクスに従って、指定されたクラスの囲んでいるクラス階層を再帰的に検索します。

      このコンテキストでは、この用語は再帰的に、現在のアノテーション、インターフェース、スーパークラス、アノテーションを検索するクラスとしてクラスを囲むことでステップ #1 に戻ることによって検索プロセスが続行されることを意味します。

      パラメーター:
      clazz - アノテーションを探すクラス
      annotationType - 検索するアノテーションの型
      戻り値:
      アノテーションが見つかった場合は、対応するアノテーション記述子。それ以外の場合は null
      関連事項:
    • findAnnotationDescriptorForTypes

      @Nullable public static TestContextAnnotationUtils.UntypedAnnotationDescriptor findAnnotationDescriptorForTypes(ClassSE<?> clazz, ClassSE<? extends AnnotationSE>... annotationTypes)
      指定された annotationTypes の少なくとも 1 つを宣言する、指定された clazz (指定された clazz 自体を含む)の継承階層の最初の ClassSETestContextAnnotationUtils.UntypedAnnotationDescriptor を見つけます。

      このメソッドは、指定されたクラス自体にアノテーションが見つからない場合、指定された clazz のアノテーション、インターフェース、スーパークラス、それを囲むクラスをトラバースします。

      このメソッドは、継承SE として宣言されていないクラスレベルのアノテーションとメタアノテーションを明示的に処理します。

      アルゴリズムは次のように動作します。

      1. 指定されたクラスのアノテーション型の 1 つのローカル宣言を検索し、見つかった場合は対応する UntypedAnnotationDescriptor を返します。
      2. 指定されたクラスが宣言するすべてのアノテーションを再帰的に検索します。
      3. 指定されたクラスによって実装されたすべてのインターフェースを再帰的に検索します。
      4. 指定されたクラスのスーパークラス階層を再帰的に検索します。
      5. 必要に応じて、@NestedTestConfiguration セマンティクスに従って、指定されたクラスの囲んでいるクラス階層を再帰的に検索します。

      このコンテキストでは、この用語は再帰的に、現在のアノテーション、インターフェース、スーパークラス、アノテーションを検索するクラスとしてクラスを囲むことでステップ #1 に戻ることによって検索プロセスが続行されることを意味します。

      パラメーター:
      clazz - アノテーションを探すクラス
      annotationTypes - 探すアノテーションの種類
      戻り値:
      アノテーションの 1 つが見つかった場合、対応するアノテーション記述子。それ以外の場合は null
      関連事項:
    • searchEnclosingClass

      public static boolean searchEnclosingClass(ClassSE<?> clazz)
      提供されたクラスの包含クラスのアノテーションを、Spring TestContext フレームワーク内のアノテーション検索アルゴリズムで検索する必要があるかどうかを判別します。
      パラメーター:
      clazz - 包含クラスを検索する可能性のあるクラス
      戻り値:
      提供されたクラスが、それを囲むクラスを検索する必要がある内部クラスである場合は、true 
      関連事項: