クラス TestContextAnnotationUtils
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
- 関連事項:
ネストされたクラスのサマリー
修飾子と型クラス説明static class
Annotation
SE の記述子。これには、アノテーションが宣言されているクラスと、マージされたアノテーションインスタンスが含まれます。static class
実際のアノテーション型を事前に決定できない、いくつかの候補アノテーション型の 1 つの宣言を記述するために使用されるTestContextAnnotationUtils.AnnotationDescriptor
の型なし拡張。コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明static <T extends AnnotationSE>
TestContextAnnotationUtils.AnnotationDescriptor<T>findAnnotationDescriptor
(ClassSE<?> clazz, ClassSE<T> annotationType) 提供されたClass
SE で提供されたannotationType
のTestContextAnnotationUtils.AnnotationDescriptor
を見つけ、そのアノテーション、インターフェース、スーパークラスをトラバースし、指定されたクラス自体にアノテーションが見つからない場合はクラスを囲みます。findAnnotationDescriptorForTypes
(ClassSE<?> clazz, ClassSE<? extends AnnotationSE>... annotationTypes) 指定されたannotationTypes
の少なくとも 1 つを宣言する、指定されたclazz
(指定されたclazz
自体を含む)の継承階層の最初のClass
SE のTestContextAnnotationUtils.UntypedAnnotationDescriptor
を見つけます。static <T extends AnnotationSE>
TfindMergedAnnotation
(ClassSE<?> clazz, ClassSE<T> annotationType) 指定されたクラスの上のアノテーション階層内で指定されたannotationType
の最初のアノテーションを見つけ、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションからの一致する属性とマージし、結果を合成して指定されたannotationType
のアノテーションに戻します。static <T extends AnnotationSE>
SetSE<T>getMergedRepeatableAnnotations
(ClassSE<?> clazz, ClassSE<T> annotationType) 指定されたクラスの上のアノテーション階層内で、指定されたannotationType
のすべての繰り返し可能なアノテーションを取得します。見つかったアノテーションごとに、そのアノテーションの属性を、アノテーション階層の下位レベルにあるアノテーションの一致する属性とマージし、結果を合成して、指定されたannotationType
のアノテーションに戻します。static boolean
hasAnnotation
(ClassSE<?> clazz, ClassSE<? extends AnnotationSE> annotationType) findMergedAnnotation(Class, Class)
で使用されている検索アルゴリズムに従って、指定されたannotationType
のアノテーションが提供されたClass
SE に存在するかメタ存在であるかを判別します。static boolean
searchEnclosingClass
(ClassSE<?> clazz) 提供されたクラスの包含クラスのアノテーションを、Spring TestContext フレームワーク内のアノテーション検索アルゴリズムで検索する必要があるかどうかを判別します。
コンストラクターの詳細
TestContextAnnotationUtils
public TestContextAnnotationUtils()
メソッドの詳細
hasAnnotation
public static boolean hasAnnotation(ClassSE<?> clazz, ClassSE<? extends AnnotationSE> annotationType) findMergedAnnotation(Class, Class)
で使用されている検索アルゴリズムに従って、指定されたannotationType
のアノテーションが提供されたClass
SE に存在するかメタ存在であるかを判別します。このメソッドが
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
のアノテーションに戻します。このメソッドは、提供されたクラスに繰り返し可能なアノテーションのローカル宣言がない場合、スーパークラスで宣言された
@Inherited
SE アノテーションを検索します。継承されたアノテーションが見つからない場合、このメソッドは、指定されたクラスの囲んでいるクラス階層内を検索します。囲んでいるクラス階層は、@NestedTestConfiguration
セマンティクスに従ってのみ検索されます。繰り返し可能なアノテーションを保持するコンテナー型は、
Repeatable
SE を介して検索されます。@AliasFor
セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。- パラメーター:
clazz
- アノテーションを検索するクラス (非null
)annotationType
- 検索するアノテーション型 (非null
)- 戻り値:
- マージされた繰り返し可能なアノテーションのセットが見つかった場合、または何も見つからなかった場合は空のセット
- 関連事項:
findAnnotationDescriptor
@Nullable public static <T extends AnnotationSE> TestContextAnnotationUtils.AnnotationDescriptor<T> findAnnotationDescriptor(ClassSE<?> clazz, ClassSE<T> annotationType) 提供されたClass
SE で提供されたannotationType
のTestContextAnnotationUtils.AnnotationDescriptor
を見つけ、そのアノテーション、インターフェース、スーパークラスをトラバースし、指定されたクラス自体にアノテーションが見つからない場合はクラスを囲みます。このメソッドは、継承SE として宣言されていないクラスレベルのアノテーションとメタアノテーションを明示的に処理します。
アルゴリズムは次のように動作します。
- 指定されたクラスのアノテーションを検索し、見つかった場合は対応する
AnnotationDescriptor
を返します。 - 指定されたクラスが宣言するすべてのアノテーションを再帰的に検索します。
- 指定されたクラスによって実装されたすべてのインターフェースを再帰的に検索します。
- 指定されたクラスのスーパークラス階層を再帰的に検索します。
- 必要に応じて、
@NestedTestConfiguration
セマンティクスに従って、指定されたクラスの囲んでいるクラス階層を再帰的に検索します。
このコンテキストでは、この用語は再帰的に、現在のアノテーション、インターフェース、スーパークラス、アノテーションを検索するクラスとしてクラスを囲むことでステップ #1 に戻ることによって検索プロセスが続行されることを意味します。
- パラメーター:
clazz
- アノテーションを探すクラスannotationType
- 検索するアノテーションの型- 戻り値:
- アノテーションが見つかった場合は、対応するアノテーション記述子。それ以外の場合は
null
- 関連事項:
- 指定されたクラスのアノテーションを検索し、見つかった場合は対応する
findAnnotationDescriptorForTypes
@Nullable public static TestContextAnnotationUtils.UntypedAnnotationDescriptor findAnnotationDescriptorForTypes(ClassSE<?> clazz, ClassSE<? extends AnnotationSE>... annotationTypes) 指定されたannotationTypes
の少なくとも 1 つを宣言する、指定されたclazz
(指定されたclazz
自体を含む)の継承階層の最初のClass
SE のTestContextAnnotationUtils.UntypedAnnotationDescriptor
を見つけます。このメソッドは、指定されたクラス自体にアノテーションが見つからない場合、指定された
clazz
のアノテーション、インターフェース、スーパークラス、それを囲むクラスをトラバースします。このメソッドは、継承SE として宣言されていないクラスレベルのアノテーションとメタアノテーションを明示的に処理します。
アルゴリズムは次のように動作します。
- 指定されたクラスのアノテーション型の 1 つのローカル宣言を検索し、見つかった場合は対応する
UntypedAnnotationDescriptor
を返します。 - 指定されたクラスが宣言するすべてのアノテーションを再帰的に検索します。
- 指定されたクラスによって実装されたすべてのインターフェースを再帰的に検索します。
- 指定されたクラスのスーパークラス階層を再帰的に検索します。
- 必要に応じて、
@NestedTestConfiguration
セマンティクスに従って、指定されたクラスの囲んでいるクラス階層を再帰的に検索します。
このコンテキストでは、この用語は再帰的に、現在のアノテーション、インターフェース、スーパークラス、アノテーションを検索するクラスとしてクラスを囲むことでステップ #1 に戻ることによって検索プロセスが続行されることを意味します。
- パラメーター:
clazz
- アノテーションを探すクラスannotationTypes
- 探すアノテーションの種類- 戻り値:
- アノテーションの 1 つが見つかった場合、対応するアノテーション記述子。それ以外の場合は
null
- 関連事項:
- 指定されたクラスのアノテーション型の 1 つのローカル宣言を検索し、見つかった場合は対応する
searchEnclosingClass
提供されたクラスの包含クラスのアノテーションを、Spring TestContext フレームワーク内のアノテーション検索アルゴリズムで検索する必要があるかどうかを判別します。- パラメーター:
clazz
- 包含クラスを検索する可能性のあるクラス- 戻り値:
- 提供されたクラスが、それを囲むクラスを検索する必要がある内部クラスである場合は、
true
- 関連事項: