在运行时扫描 Java 注释
2022-08-31 05:17:20
如何在整个类路径中搜索带注释的类?
我正在做一个库,我想允许用户注释他们的类,所以当Web应用程序启动时,我需要扫描整个类路径以查找某些注释。
我正在考虑类似Java EE 5 Web Services或EJB的新功能。您可以使用 or 对类进行批注,系统会在加载时找到这些类,以便可以远程访问它们。@WebService
@EJB
如何在整个类路径中搜索带注释的类?
我正在做一个库,我想允许用户注释他们的类,所以当Web应用程序启动时,我需要扫描整个类路径以查找某些注释。
我正在考虑类似Java EE 5 Web Services或EJB的新功能。您可以使用 or 对类进行批注,系统会在加载时找到这些类,以便可以远程访问它们。@WebService
@EJB
Use org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider
应用程序接口
从基包扫描类路径的组件提供程序。然后,它将排除和包含筛选器应用于生成的类以查找候选项。
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());
另一个解决方案是ronmamo的Reflections。
快速查看: