Reflections 介紹

Reflections 介紹

研究Spring掃包原理的時候,在網上查閱相關資料的時候,發現使用Reflections庫能夠實現掃包。java

Reflections 經過掃描 classpath,索引元數據,容許在運行時查詢這些元數據,也能夠保存收集項目中多個模塊的元數據信息,值得一提的是,這東西在掃描的時候,連依賴的jar包都不放過。git

使用 Reflections 能夠查詢如下元數據信息:github

1)得到某個類型的全部子類型
2)得到標記了某個註解的全部類型/成員變量,支持註解參數匹配。
3)使用正則表達式得到全部匹配的資源文件
4)得到全部特定簽名(包括參數,參數註解,返回值)的方法正則表達式

Reflections 依賴 GoogleGuava 庫和 Javassist 庫。spa

Maven 項目導入.net

<dependency>
    <groupId>org.reflections</groupId>
    <artifactId>reflections</artifactId>
    <version>0.9.11</version>
</dependency>

一般用法:code

Reflections reflections = new Reflections("com.my", new SubTypesScanner(false));
Set<Class<? extends T>> subTypesOf = reflections.getSubTypesOf(T.class);
Set<Class<?>> annotated = reflections.getTypesAnnotatedWith(T.class);

Reflections還有不少相似的反射類操做(如掃描方法、掃描參數等),能夠說是應有盡有了。有興趣的小夥伴們能夠參考Reflection庫的源碼或者官方文檔,這裏就不詳述了。xml

參考地址:https://github.com/ronmamo/reflections索引

相關文章
相關標籤/搜索