Reflections 介绍
Reflections 介绍
研究Spring扫包原理的时候,在网上查阅相关资料的时候,发现使用Reflections库可以实现扫包。
Reflections 通过扫描 classpath,索引元数据,允许在运行时查询这些元数据,也可以保存收集项目中多个模块的元数据信息,值得一提的是,这东西在扫描的时候,连依赖的jar包都不放过。
使用 Reflections 可以查询以下元数据信息:
1)获得某个类型的所有子类型
2)获得标记了某个注解的所有类型/成员变量,支持注解参数匹配。
3)使用正则表达式获得所有匹配的资源文件
4)获得所有特定签名(包括参数,参数注解,返回值)的方法
Reflections 依赖 Google 的 Guava 库和 Javassist 库。
Maven 项目导入
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.11</version>
</dependency>
通常用法:
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库的源码或者官方文档,这里就不详述了。
键盘敲烂,薪资上万 -----by 小老弟