クラス TestContextAnnotationUtils
TestContextAnnotationUtils は、@NestedTestConfiguration セマンティクスを透過的に尊重しながら、MergedAnnotations、AnnotationUtils、AnnotatedElementUtils ですでに利用可能な標準サポートを補完するユーティリティメソッドのコレクションです。主に Spring、TestContext、フレームワーク内での内部使用を目的としていますが、TestContext フレームワークとのサードパーティ統合もサポートされています。
MergedAnnotations、AnnotationUtils、AnnotatedElementUtils はアノテーションを取得または検索するためのユーティリティを提供しますが、TestContextAnnotationUtils はさらに一歩進んで、アノテーションが宣言されているルートクラスを直接または合成アノテーションを介して間接的に決定するためのサポートを提供します。この追加情報は、TestContextAnnotationUtils.AnnotationDescriptor にカプセル化されます。
AnnotationDescriptor によって提供される追加情報は、Spring TestContext フレームワークが、さまざまな継承されたアノテーション属性のマージとオーバーライドをサポートする @ContextConfiguration、@TestExecutionListeners、@ActiveProfiles などのアノテーションのクラス継承とクラス階層トラバーサルの囲みをサポートできるようにするために必要です。たとえば、ContextConfiguration.inheritLocations() です。
ネストされたクラスの要約
ネストされたクラス修飾子と型クラス説明static classAnnotationSE の記述子。これには、アノテーションが宣言されているクラスと、マージされたアノテーションインスタンスが含まれます。static class実際のアノテーション型を事前に決定できない、いくつかの候補アノテーション型の 1 つの宣言を記述するために使用されるTestContextAnnotationUtils.AnnotationDescriptorの型なし拡張。コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明static <T extends AnnotationSE>
TestContextAnnotationUtils.AnnotationDescriptor<T>findAnnotationDescriptor(ClassSE<?> clazz, ClassSE<T> annotationType) 提供されたClassSE で提供されたannotationTypeのTestContextAnnotationUtils.AnnotationDescriptorを見つけ、そのアノテーション、インターフェース、スーパークラスをトラバースし、指定されたクラス自体にアノテーションが見つからない場合はクラスを囲みます。findAnnotationDescriptorForTypes(ClassSE<?> clazz, ClassSE<? extends AnnotationSE>... annotationTypes) 指定されたannotationTypesの少なくとも 1 つを宣言する、指定されたclazz(指定されたclazz自体を含む)の継承階層の最初のClassSE の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 booleanhasAnnotation(ClassSE<?> clazz, ClassSE<? extends AnnotationSE> annotationType) findMergedAnnotation(Class, Class)で使用されている検索アルゴリズムに従って、指定されたannotationTypeのアノテーションが提供されたClassSE に存在するかメタ存在であるかを判別します。static booleansearchEnclosingClass(ClassSE<?> clazz) 提供されたクラスの包含クラスのアノテーションを、Spring TestContext フレームワーク内のアノテーション検索アルゴリズムで検索する必要があるかどうかを判別します。
コンストラクターの詳細
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 として宣言されていないクラスレベルのアノテーションとメタアノテーションを明示的に処理します。
アルゴリズムは次のように動作します。
- 指定されたクラスのアノテーションを検索し、見つかった場合は対応する
AnnotationDescriptorを返します。 - 指定されたクラスが宣言するすべてのアノテーションを再帰的に検索します。
- 指定されたクラスによって実装されたすべてのインターフェースを再帰的に検索します。
- 指定されたクラスのスーパークラス階層を再帰的に検索します。
- 必要に応じて、
@NestedTestConfigurationセマンティクスに従って、指定されたクラスの囲んでいるクラス階層を再帰的に検索します。
このコンテキストでは、この用語は再帰的に、現在のアノテーション、インターフェース、スーパークラス、アノテーションを検索するクラスとしてクラスを囲むことでステップ #1 に戻ることによって検索プロセスが続行されることを意味します。
- パラメーター:
clazz- アノテーションを探すクラスannotationType- 検索するアノテーションの型- 戻り値:
- アノテーションが見つかった場合は、対応するアノテーション記述子。それ以外の場合は
null - 関連事項:
- 指定されたクラスのアノテーションを検索し、見つかった場合は対応する
findAnnotationDescriptorForTypes
@Nullable public static TestContextAnnotationUtils.UntypedAnnotationDescriptor findAnnotationDescriptorForTypes(ClassSE<?> clazz, ClassSE<? extends AnnotationSE>... annotationTypes) 指定されたannotationTypesの少なくとも 1 つを宣言する、指定されたclazz(指定されたclazz自体を含む)の継承階層の最初のClassSE のTestContextAnnotationUtils.UntypedAnnotationDescriptorを見つけます。このメソッドは、指定されたクラス自体にアノテーションが見つからない場合、指定された
clazzのアノテーション、インターフェース、スーパークラス、それを囲むクラスをトラバースします。このメソッドは、継承SE として宣言されていないクラスレベルのアノテーションとメタアノテーションを明示的に処理します。
アルゴリズムは次のように動作します。
- 指定されたクラスのアノテーション型の 1 つのローカル宣言を検索し、見つかった場合は対応する
UntypedAnnotationDescriptorを返します。 - 指定されたクラスが宣言するすべてのアノテーションを再帰的に検索します。
- 指定されたクラスによって実装されたすべてのインターフェースを再帰的に検索します。
- 指定されたクラスのスーパークラス階層を再帰的に検索します。
- 必要に応じて、
@NestedTestConfigurationセマンティクスに従って、指定されたクラスの囲んでいるクラス階層を再帰的に検索します。
このコンテキストでは、この用語は再帰的に、現在のアノテーション、インターフェース、スーパークラス、アノテーションを検索するクラスとしてクラスを囲むことでステップ #1 に戻ることによって検索プロセスが続行されることを意味します。
- パラメーター:
clazz- アノテーションを探すクラスannotationTypes- 探すアノテーションの種類- 戻り値:
- アノテーションの 1 つが見つかった場合、対応するアノテーション記述子。それ以外の場合は
null - 関連事項:
- 指定されたクラスのアノテーション型の 1 つのローカル宣言を検索し、見つかった場合は対応する
searchEnclosingClass
提供されたクラスの包含クラスのアノテーションを、Spring TestContext フレームワーク内のアノテーション検索アルゴリズムで検索する必要があるかどうかを判別します。- パラメーター:
clazz- 包含クラスを検索する可能性のあるクラス- 戻り値:
- 提供されたクラスが、それを囲むクラスを検索する必要がある内部クラスである場合は、
true - 関連事項: