扫描类路径以查找具有自定义注释的类
例如,如果我有注释并且在我的类路径中有这些类,那么我可以使用某种过滤器扫描类路径(例如,仅扫描以 开头的包),并获取带有注释的所有类的列表?我使用guice作为注入框架,我不使用Spring。@MyOwnAnnotation
my.own.app.*
@MyOwnAnnotation
例如,如果我有注释并且在我的类路径中有这些类,那么我可以使用某种过滤器扫描类路径(例如,仅扫描以 开头的包),并获取带有注释的所有类的列表?我使用guice作为注入框架,我不使用Spring。@MyOwnAnnotation
my.own.app.*
@MyOwnAnnotation
是的,请查看扫描注释库。
另请参阅以下博客文章,其中记录了扫描注释的使用。
基本示例:
URL[] urls = ClasspathUrlFinder.findClassPaths(); // scan java.class.path
AnnotationDB db = new AnnotationDB();
db.scanArchives(urls);
Set<String> entityClasses =
db.getAnnotationIndex().get(MyOwnAnnotation.class.getName());
批注需要具有“运行时”保留,以便它们在运行时在文件中可用。.class
你可以试试我的库 FastClasspathScanner:
List<String> classNames = new FastClassPathScanner("my.own.app")
.scan()
.getNamesOfClassesWithAnnotation(MyOwnAnnotation.class);