春天通过aop获取方法参数和参数值的方法

  介绍

这篇文章主要介绍“春通过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获取方法参数和参数值的方法