Reflections 详细介绍

Reflections 通过扫描 classpath,索引元数据,允许在运行时查询这些元数据,也可以保存收集项目中多个模块的元数据信息。

使用 Reflections 可以查询以下元数据信息: 
1)获得某个类型的所有子类型
2)获得标记了某个注解的所有类型/成员变量,支持注解参数匹配。
3)使用正则表达式获得所有匹配的资源文件
4)获得所有特定签名(包括参数,参数注解,返回值)的方法

Reflections 依赖 Google 的 Guava 库和 Javassist 库。

Maven 项目导入

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

通常用法:

Reflections reflections = new Reflections("my.project");Set<Class<? extends SomeType>> subTypes = reflections.getSubTypesOf(SomeType.class);Set<Class<?>> annotated = reflections.getTypesAnnotatedWith(SomeAnnotation.class);

Reflections 初始化代码。

//scan urls that contain 'my.package', include inputs starting with 'my.package', use the default scanners
Reflections reflections = new Reflections("my.package");//or using ConfigurationBuilder
new Reflections(new ConfigurationBuilder().setUrls(ClasspathHelper.forPackage("my.project.prefix")).setScanners(new SubTypesScanner(), new TypeAnnotationsScanner().filterResultsBy(optionalFilter), ...),.filterInputsBy(new FilterBuilder().includePackage("my.project.prefix"))...);

以下是一些使用例子代码。

//SubTypesScanner
Set<Class<? extends Module>> modules = reflections.getSubTypesOf(com.google.inject.Module.class);
//TypeAnnotationsScanner
Set<Class<?>> singletons = reflections.getTypesAnnotatedWith(javax.inject.Singleton.class);
//ResourcesScanner
Set<String> properties = reflections.getResources(Pattern.compile(".*\\.properties"));
//MethodAnnotationsScanner
Set<Method> resources =reflections.getMethodsAnnotatedWith(javax.ws.rs.Path.class);
Set<Constructor> injectables = reflections.getConstructorsAnnotatedWith(javax.inject.Inject.class);
//FieldAnnotationsScanner
Set<Field> ids = reflections.getFieldsAnnotatedWith(javax.persistence.Id.class);
//MethodParameterScanner
Set<Method> someMethods =reflections.getMethodsMatchParams(long.class, int.class);
Set<Method> voidMethods =reflections.getMethodsReturn(void.class);
Set<Method> pathParamMethods =reflections.getMethodsWithAnyParamAnnotated(PathParam.class);
//MethodParameterNamesScanner
List<String> parameterNames = reflections.getMethodParamNames(Method.class)
//MemberUsageScanner
Set<Member> usages = reflections.getMethodUsages(Method.class)

Reflections 详细介绍相关推荐

  1. HTML页面加载和解析流程详细介绍

    浏览器加载和渲染html的顺序.如何加快HTML页面加载速度.HTML页面加载和解析流程等等,在本文将为大家详细介绍下,感兴趣的朋友不要错过 浏览器加载和渲染html的顺序 1. IE下载的顺序是从上 ...

  2. mysql为什么要压测_mysql集群压测的详细介绍

    本篇文章给大家带来的内容是关于mysql集群压测的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. mysql压测 mysql自带就有一个叫mysqlslap的压力测试工具,通 ...

  3. php比较运算符案列,PHP实例:PHP比较运算符的详细介绍

    <PHP实例:PHP比较运算符的详细介绍>要点: 本文介绍了PHP实例:PHP比较运算符的详细介绍,希望对您有用.如果有疑问,可以联系我们. 比拟运算符种类 PHP实战如同它们名称所暗示的 ...

  4. Tempdb数据库详细介绍

    Tempdb数据库详细介绍 一.Tempdb简介 tempdb是SQLServer的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象.可以简单理解tempdb是SQLServer的 ...

  5. linux路由介绍,Linux的路由表详细介绍

    Linux的路由表详细介绍 一 在Linux下执行route命令[root@localhost backup]# route -nKernel IP routing tableDestination ...

  6. pythonexcel介绍_Python 中pandas.read_excel详细介绍

    Python 中pandas.read_excel详细介绍 #coding:utf-8 import pandas as pd import numpy as np filefullpath = r& ...

  7. 渡神纪帧数测试软件,渡神纪芬尼斯崛起配置要求高吗 渡神纪配置要求详细介绍_游侠网...

    渡神纪芬尼斯崛起配置要求高吗?本作将在12月3日登陆主机和PC,很多玩家比较关心游戏的配置,这里给大家带来了渡神纪配置要求详细介绍,快来了解下吧. 渡神纪配置要求详细介绍 最低要求(720p/30 f ...

  8. C++11 unordered_map详细介绍

    整理的算法模板合集: ACM模板 目录: 1.介绍 1.1 特性 2. 模版 2.1 迭代器 3. 功能函数 3.1 构造函数 3.2 容量操作 3.2.1 size 3.2.2 empty 3.3 ...

  9. autosar中com模块_详细介绍AUTOSAR各个模块作用PART1(OS,SYS)

    这片文章中我们详细讲解下每个模块的功能,上图是vector的autosar方案,每个模块的详细介绍后续会有单独文章进行讲解,请关注.以下是各个模块的简介 1.VHSM hardware Securit ...

最新文章

  1. python画动态图代码-Python使用matplotlib画动态图
  2. free malloc
  3. 【lua学习】5.栈和lua_State
  4. WebP 在减少图片体积和流量上的效果如何?MIP技术实践分享
  5. IDEA中Git的更新、提交、还原方法
  6. Java 面向对象:封装详解
  7. Windows10安装ubuntu 20双系统
  8. Linux命令:修改文件权限命令chmod、chgrp、chown详解
  9. idea 读取md文件卡死
  10. 计算机机房需求调查表,机房建设需求调查表.doc
  11. 三极管BJT特性曲线,原理
  12. linux btrfs raid0,Linux初学之btrfs文件系统及磁盘配额
  13. html页面出现504,web生产环境故障页面提示504错误
  14. 问题驱动,提出问题,发现问题,解决问题
  15. 【预测模型】基于天牛须算法BAS优化BP神经网络实现数据预测matlab代码
  16. Windows 10 安装使用TensorFlow-GPU
  17. 部署 php 项目,使用deployer 来部署PHP项目
  18. element 配置全局样式 例如:为项目中所有el-dialog弹窗添加分割线
  19. oracle 序列和表关联,Oracle 创建和管理表、集群和序列
  20. layui弹框回车越来越黑

热门文章

  1. Windows 11 中文 Dev版本(22000.51)下载安装教程
  2. 女人,请对你的男人好点
  3. 1163. 第K短路
  4. 微信小程序倒计时方法封装
  5. 易维帮助台:企业售后服务如何高效派单
  6. android 按钮图片切换动画效果,Button按钮点击图片切换效果
  7. linux系统BT服务器搭建
  8. 【HAOI2016/BZOJ4566】找相同字符 后缀数组+单调栈
  9. [精简]托福核心词汇97
  10. 刚做测试一年,我是怎么样的