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


任意の数のターゲットクラスに対してリフレクションヒントを登録します。

このアノテーションを直接使用すると、各ターゲットクラスに対して定義されたメンバーカテゴリのみが登録されます。ターゲットクラスは、クラスまたはクラス名で指定できます。両方を指定すると、すべてが考慮されます。ターゲットクラスが指定されていない場合は、現在のクラスが使用されます。

このアノテーションは、各ターゲットクラスに対してヒントを登録する方法をカスタマイズするためのメタアノテーションとして使用できます。

このアノテーションは、コンテキストに提供される任意の Bean で使用できます。

@Configuration
@RegisterReflection(classes = CustomerEntry.class, memberCategories = PUBLIC_FIELDS)
class MyConfig {
    // ...
}

Reflective のスキャンが有効になっている場合、構成されたパッケージ内の任意の型でもこのアノテーションを使用できます。

型自体のリフレクションヒントを登録するには、メンバーカテゴリのみを指定する必要があります。

@Component
@RegisterReflection(memberCategories = INVOKE_PUBLIC_METHODS)
class MyComponent {
    // ...
}

リフレクションヒントはメソッドから登録できます。この場合、少なくとも 1 つのターゲットクラスを指定する必要があります。

class MyProcessor {

    @RegisterReflection(classes = CustomerEntry.class, memberCategories = PUBLIC_FIELDS)
    CustomerEntry process() { ... }
    // ...
}

クラスが利用できない場合は、classNames() では ClassSE 参照ではなく完全修飾名を指定できます。

アノテーション付き要素は、Spring TestContext フレームワークを使用して ApplicationContext をロードする任意のテストクラスにすることもできます。

導入:
6.2
作成者:
Stephane Nicoll
  • 要素の詳細

    • classes

      ClassSE<?>[] classes
      リフレクションヒントを登録するクラス。現在のスコープでパブリックでないクラスには、classNames() の使用を検討してください。classes と classNames の両方が指定されている場合は、1 つのセットにマージされます。

      デフォルトでは、アノテーションが付けられた型が登録の対象になります。メソッドに配置する場合は、少なくとも 1 つのクラスを指定する必要があります。

      関連事項:
      デフォルト:
      {}
    • classNames

      StringSE[] classNames
      クラスをクラス名として指定するための classes() の代替。
      関連事項:
      デフォルト:
      {}
    • memberCategories

      MemberCategory[] memberCategories
      有効にするメンバーカテゴリを指定します。
      デフォルト:
      {}