介绍
这篇文章主要介绍“春通过aop获取方法参数和参数值的方法”,在日常操作中,相信很多人在春天通过aop获取方法参数和参数值的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“春通过aop获取方法参数和参数值的方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
<编辑类="目录">目录编辑>- <李>
春通过aop获取方法参数和参数值
李>- <李>
自定义注解
李> <李>切面
李>aop切面注解,参数获取
李>- <李>
1,定义需要切面的注解
李> <李>2,在需要进行切面的方法标注注解
李> <李>3,定义切面
李>春通过aop获取方法参数和参数值
自定义注解
package com.xiaolc.aspect;,, import java.lang.annotation。*,/* * ,* @author lc ,* @date 2019/9/10 ,*/@Documented @Target ({ElementType.TYPE, ElementType.METHOD}) @Retention (RetentionPolicy.RUNTIME) public @interface  LiCheng { }
切面
package com.xiaolc.aspect;, import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.core.DefaultParameterNameDiscoverer; import org.springframework.core.ParameterNameDiscoverer; import org.springframework.stereotype.Component; , import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; ,/* * ,*获取方法上的注解值 ,*/@ component @Aspect public class  AuditAnnotationAspect { , ,,,@Around (“@annotation(利晟))“) ,,,private static Map getFieldsName (ProceedingJoinPoint 连接点,LiCheng 利晟),throws ClassNotFoundException,, NoSuchMethodException { ,,,,,,,String classType =, joinPoint.getTarget () .getClass () . getname (); ,,,,,,,String methodName =, joinPoint.getSignature () . getname (); ,,,,,,,//,参数的值 ,,,,,,,对象[],args =, joinPoint.getArgs (); ,,,,,,,Class<?在[],classes =, new 类(args.length); ,,,,,,,for (int k =, 0;, k & lt;, args.length;, k + +), { ,,,,,,,,,,,if (! args [k] .getClass () .isPrimitive ()), { ,,,,,,,,,,,,,,,//,获取的是封装类型而不是基础类型 ,,,,,,,,,,,,,,,String result =, arg游戏[k] .getClass () . getname (); ,,,,,,,,,,,,,,,Class s =, map.get(结果); ,,,,,,,,,,,,,,,类[k],=,==, s null ?, arg游戏[k] .getClass (),:,; ,,,,,,,,,,,} ,,,,,,,} ,,,,,,,ParameterNameDiscoverer pnd =, new DefaultParameterNameDiscoverer (); ,,,,,,,//,获取指定的方法,第二个参数可以不传,但是为了防止有重载的现象,还是需要传入参数的类型 ,,,,,,,Method Method =, forname (classType) .getMethod (methodName,类); ,,,,,,,//,参数名 ,,,,,,,String [], parameterNames =, pnd.getParameterNames(方法); ,,,,,,,//,通过地图封装参数和参数的值 ,,,,,,,HashMap<字符串,Object>, paramMap =, new HashMap (); ,,,,,,,for (int 小姐:=,0;,小姐:& lt;, parameterNames.length;,我+ +),{ ,,,,,,,,,,,paramMap.put (parameterNames[我],arg游戏[我]); ,,,,,,,,,,,System.out.println(“参数名:“+ parameterNames[我]+“\ n参数值“+ args[我]); ,,,,,,,} ,,,,,,,return paramMap; ,,,} ,,,private static HashMap<字符串,Class>, map =, new HashMap<字符串,Class> (), { ,,,,,,,{ ,,,,,,,,,,,把(“java.lang.Integer",, int.class); null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null春天通过aop获取方法参数和参数值的方法