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索引

相关文章
相关标签/搜索