在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条评论来说两句吧...