在SpringAOP中如何获取方法的参数值(实体类)以及参数名
废话不多说直接上代码 参数对了效果就可以出来 返回值是一个map key 是参数名称 value 是参数值,
private static Map getFieldsName(ProceedingJoinPoint joinPoint) throws ClassNotFoundException, NoSuchMethodException {
String classType = joinPoint.getTarget().getClass().getName();
String methodName = joinPoint.getSignature().getName();
// 参数值
Object[] args = joinPoint.getArgs();
Class<?>[] classes = new Class[args.length];
for (int k = 0; k < args.length; k++) {
if (!args[k].getClass().isPrimitive()) {
// 获取的是封装类型而不是基础类型
String result = args[k].getClass().getName();
Class s = map.get(result);
classes[k] = s == null ? args[k].getClass() : s;
}
}
ParameterNameDiscoverer pnd = new DefaultParameterNameDiscoverer();
// 获取指定的方法,第二个参数可以不传,但是为了防止有重载的现象,还是需要传入参数的类型
Method method = Class.forName(classType).getMethod(methodName, classes);
// 参数名
String[] parameterNames = pnd.getParameterNames(method);
// 通过map封装参数和参数值
HashMap<String, Object> paramMap = new HashMap();
for (int i = 0; i < parameterNames.length; i++) {
paramMap.put(parameterNames[i], args[i]);
}
return paramMap;
}
private static HashMap<String, Class> map = new HashMap<String, Class>() {
{
put("java.lang.Integer", int.class);
put("java.lang.Double", double.class);
put("java.lang.Float", float.class);
put("java.lang.Long", long.class);
put("java.lang.Short", short.class);
put("java.lang.Boolean", boolean.class);
put("java.lang.Char", char.class);
}
};

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
SQL SERVER GO命令循环使用实例
原文: SQL SERVER GO命令循环使用实例 通过GO 命令 来达到语句循环效果 也叫批循环 print '输出10次' GO 10 也可用来新增 语句 NOCOUNT ON 用来屏蔽 新增语句输出的影响行数 我们只看循环次数 SET NOCOUNT ON; GO INSERT INTO dbo.T1 DEFAULT VALUES; GO 100
-
下一篇
《数据科学家访谈录》总结·2
01 - 05:DJ Patil, Hillary Mason, Pete Skomoroch, Mike Dewar, Riley Newman 06 - 10:Clare Corthell, Drew Conway, Kevin Novak, Chris Moody, Erich Owen11 - 15:Eithon Cadag, George Roumeliotis, Diane Wu, Jace Kohlmeier, Joe Blitzstein16 - 20:Jonh Foreman, Josh Wills, Bradley Voytek, Luis Sanchez, Michelangelo D’ agostino21 - 25:Michael Hochster, Kunal Punera, Sean Courley, Jonathan Goldman, William Chen Clare Corthell “开源数据科学高手”课程创建者 教育经历:斯坦福大学·学士 职业经历:Mattermark数据主管 与众不同之处 在斯坦福的专业是科学技术与社会学,完全是靠自学掌握了...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装