例如,如果我有注释@MyOwnAnnotation
并在我的类路径中包含这些类,以便我可以使用某种过滤器扫描类路径(例如,只扫描以my.own.app.*
开头的包)并获取所有具有注释的课程列表@MyOwnAnnotation
?我使用guice作为注入框架,我不使用Spring。使用自定义注释扫描类路径
14
A
回答
12
是的,请查看Scannotation库。
另外,请参阅以下博客文章documents use of Scannotation。
基本例如:
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
文件在运行时可用。
0
您可以尝试玉米CPS
例子:
List<Class<?>> classes = CPScanner.scanClasses(new PackageNameFilter("net.sf.corn.cps.*"),new ClassFilter().appendAnnotation(SampleAnnotation.class));
放的关系是不低于在你的pom.xml
<dependency>
<groupId>net.sf.corn</groupId>
<artifactId>corn-cps</artifactId>
<version>1.0.1</version>
</dependency>
1
你可以试试我的图书馆FastClasspathScanner:
List<String> classNames = new FastClassPathScanner("my.own.app")
.scan()
.getNamesOfClassesWithAnnotation(MyOwnAnnotation.class);
0
我实际上推荐了另一种方法,比所有其他方法更好(因为它们都使用类路径扫描,这很慢)。这就是所谓的ClassIndex和它索引注释类:
相关问题
- 1. 注释扫描不扫描类路径中的外部罐子
- 2. 是否有可能扫描Android类路径的注释?
- 3. 扫描Java包注释
- 4. 扫描航线Laravel注释
- 5. Spring注释扫描标签
- 6. 挂入WELD-SE类路径扫描器
- 7. 定义自定义扫描运算符
- 8. 自定义注释?
- 9. 自定义注释用法
- 10. 使用自定义的注释,如何
- 11. 在hexMachina中使用自定义注释
- 12. Java - 将项目扫描为另一个自定义类的自定义类
- 13. 扫描注释类不适用于Instant Run
- 14. 在运行时扫描Java注释
- 15. 的WebSphere不扫描@WebService注释
- 16. 你如何为自定义类注释?
- 17. 我的Eclipse中的扫描器类没有扫描器(路径)方法
- 18. 扫描 - hw自定义文档大小
- 19. 扫描给定的自定义属性的所有类
- 20. 如何完全禁用WebSphere 8.5类路径扫描?
- 21. 避免对Spring配置类进行类路径扫描
- 22. 如何指定tuareg-mode emacs中的注释文件的自定义路径?
- 23. 自定义注释处理
- 24. 自定义注释引脚
- 25. 自定义注释错误
- 26. Angular 2 - 自定义注释
- 27. 使自定义注释可点击
- 28. 如何排除使用特定注释进行注释而未使用其他注释进行注释的bean的扫描?
- 29. 如何使用谷歌思考动态扫描带注释的类?
- 30. TYPO3 7.6.15无法为自定义部分定义路径路径
您可能会发现其他的 - 更好的选择在这里:http://stackoverflow.com/questions/259140/scanning-java-annotations-at-runtime或者如果你在类路径扫描中不会挂断,请参阅下面的答案以获得更多更快的解决方案。 –