扫描类路径以查找具有自定义注释的类

2022-09-03 14:38:36

例如,如果我有注释并且在我的类路径中有这些类,那么我可以使用某种过滤器扫描类路径(例如,仅扫描以 开头的包),并获取带有注释的所有类的列表?我使用guice作为注入框架,我不使用Spring。@MyOwnAnnotationmy.own.app.*@MyOwnAnnotation


答案 1

是的,请查看扫描注释库。

另请参阅以下博客文章,其中记录了扫描注释的使用

基本示例:

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


答案 2

你可以试试我的库 FastClasspathScanner

List<String> classNames = new FastClassPathScanner("my.own.app")
    .scan()
    .getNamesOfClassesWithAnnotation(MyOwnAnnotation.class);

推荐