例如,如果我有註釋@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或者如果你在類路徑掃描中不會掛斷,請參閱下面的答案以獲得更多更快的解決方案。 –