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


アノテーション付き要素がインデックスのステレオタイプを表すことを示します。

CandidateComponentsIndex は、コンパイル時に生成されたメタデータファイルを使用するクラスパススキャンの代替手段です。インデックスにより、ステレオタイプに基づいて候補コンポーネント(つまり、完全修飾名)を取得できます。このアノテーションは、アノテーション付き要素が存在する要素にインデックスを付けるように、またはアノテーション付き要素を実装または拡張する場合にジェネレーターに指示します。ステレオタイプは、アノテーション付き要素の完全修飾名です。

このアノテーションでメタアノテーションが付けられたデフォルトの Component アノテーションを検討してください。コンポーネントに Component のアノテーションが付けられている場合、そのコンポーネントのエントリは org.springframework.stereotype.Component ステレオタイプを使用してインデックスに追加されます。

このアノテーションは、メタアノテーションでも使用されます。このカスタムアノテーションについて考えてみましょう。

 package com.example;

 @Target(ElementType.TYPE)
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 @Indexed
 @Service
 public @interface PrivilegedService { ... }
 
上記のアノテーションが型に存在する場合、2 つのステレオタイプ org.springframework.stereotype.Component および com.example.PrivilegedService でインデックスが付けられます。Service は Indexed で直接アノテーションされていませんが、Component でメタアノテーションされています。

@Indexed を追加することにより、特定のインターフェースのすべての実装または特定のクラスのすべてのサブクラスにインデックスを付けることもできます。この基本インターフェースを検討してください:

 package com.example;

 @Indexed
 public interface AdminService { ... }
 
ここで、この AdminService の実装をどこかで検討します。
 package com.example.foo;

 import com.example.AdminService;

 public class ConfigurationAdminService implements AdminService { ... }
 
このクラスはインデックス付きのインターフェースを実装するため、com.example.AdminService ステレオタイプに自動的に含まれます。階層内により多くの @Indexed インターフェースやスーパークラスがある場合、クラスはそれらのすべてのステレオタイプにマップされます。
導入:
5.0
作成者:
Stephane Nicoll