例如,如果我有注释@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. 自定义注释使用Tomcat容器在Geronimo下扫描
- 3. 如何扫描自定义注释的类?
- 4. 从maven插件扫描自定义注释类
- 5. 是否有可能扫描Android类路径的注释?
- 6. 禁用:扫描kotlin注释
- 7. 使用自定义注释
- 8. 扫描航线Laravel注释
- 9. Spring注释扫描标签
- 10. 扫描Java包注释
- 11. OSGi中的类路径扫描
- 12. 依赖项的类路径扫描
- 13. 挂入WELD-SE类路径扫描器
- 14. Android自定义Wifi扫描
- 15. 使用Google Reflections进行注释的Java扫描类
- 16. 定义自定义扫描运算符
- 17. 自定义注释?
- 18. 通过自定义注释进行扫描的编程等效物
- 19. 自定义注释用法
- 20. 添加类路径的自定义组件描述体现
- 21. 在hexMachina中使用自定义注释
- 22. C# - 使用自定义注释?
- 23. 使用自定义的注释,如何
- 24. Java - 将项目扫描为另一个自定义类的自定义类
- 25. Sonata Admin使用注释捆绑自定义路线
- 26. 扫描注释类不适用于Instant Run
- 27. Spring 3.0注释bean组件扫描
- 28. 的Java注释扫描带弹簧
- 29. 从jar文件中扫描注释
- 30. 的WebSphere不扫描@WebService注释
您可能会发现其他的 - 更好的选择在这里:http://stackoverflow.com/questions/259140/scanning-java-annotations-at-runtime或者如果你在类路径扫描中不会挂断,请参阅下面的答案以获得更多更快的解决方案。 –