実行時にJavaアノテーションをスキャンする 質問する

実行時にJavaアノテーションをスキャンする 質問する

アノテーション付きクラスのクラスパス全体を検索するにはどうすればよいですか?

私はライブラリを作成しており、ユーザーがクラスに注釈を付けられるようにしたいと考えています。そのため、Web アプリケーションの起動時に、特定の注釈を探すためにクラスパス全体をスキャンする必要があります。

私は、Java EE 5 Web サービスまたは EJB の新しい機能のようなものを考えています。 または を使用してクラスに注釈を付ける@WebService@EJB、システムはロード中にこれらのクラスを見つけるので、リモートからアクセスできるようになります。

ベストアンサー1

使用org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider

API

基本パッケージからクラスパスをスキャンするコンポーネント プロバイダー。次に、結果のクラスに除外フィルターと包含フィルターを適用して候補を検索します。

ClassPathScanningCandidateComponentProvider scanner =
new ClassPathScanningCandidateComponentProvider(<DO_YOU_WANT_TO_USE_DEFALT_FILTER>);

scanner.addIncludeFilter(new AnnotationTypeFilter(<TYPE_YOUR_ANNOTATION_HERE>.class));

for (BeanDefinition bd : scanner.findCandidateComponents(<TYPE_YOUR_BASE_PACKAGE_HERE>))
    System.out.println(bd.getBeanClassName());

おすすめ記事