Spring AOP获取拦截方法的参数名称跟参数值
2018-09-05 15:04
696 查看
Spring AOP获取拦截方法的参数名称跟参数值
注意:这种方式需要JDK1.8版本支持
开始:
1.aop配置:
<aop:aspectj-autoproxy expose-proxy="true" />
- 注意该配置需要配置在spring mvc的配置文件中,因为需要拦截controller层方法
- 或者在必须要配置在spring配置文件中的情况下,同时需要拦截controller层的方法,可以在spring配置文件中加入controller层的包扫描
2.具体代码:
import org.apache.commons.lang3.ArrayUtils; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 请求参数拦截校验 */ @Aspect public class AopParamVerify { private static Logger log = LoggerFactory.getLogger(AopParamVerify.class); @Around(value = "execution(* com.website.controller..*.*(..))") public Object invoke(ProceedingJoinPoint joinPoint) { /** * 时间戳校验,超过一分钟,拦截 */ //返回结果封装类 HzlqswReqResult rst = new HzlqswReqResult(); //1.这里获取到所有的参数值的数组 Object[] args = joinPoint.getArgs(); Signature signature = joinPoint.getSignature(); MethodSignature methodSignature = (MethodSignature) signature; //2.最关键的一步:通过这获取到方法的所有参数名称的字符串数组 String[] parameterNames = methodSignature.getParameterNames(); try { //3.通过你需要获取的参数名称的下标获取到对应的值 int timeStampIndex = ArrayUtils.indexOf(parameterNames, "timeStamp"); if (timeStampIndex != -1) { long timeStamp = (Long) args[timeStampIndex]; if (System.currentTimeMillis() - timeStamp > 60000) { rst.setResultCode(rst.resultCode_hashCode_overdue); rst.setReturnMsg("时间戳过期"); rst.setReturnObject("时间戳过期"); return rst; } } return joinPoint.proceed(); } catch (Throwable throwable) { log.error("时间戳校验异常"); throwable.printStackTrace(); rst.setResultCode(rst.resultCode_error); rst.setReturnMsg("AOP校验异常"); rst.setReturnObject("AOP校验异常"); return rst; } } }
3.效果:
相关文章推荐
- Spring AOP获取拦截方法的参数名称跟参数值
- spring aop 利用JoinPoint获取参数的值和方法名称
- springboot 中使用 AOP 打印 类名、方法名、方法参数名称和方法参数值
- 自定义Spring的Aop切面类拦截业务请求,并获取到请求的参数名和参数值
- spring aop 利用JoinPoint获取参数的值和方法名称
- Spring中的AOP—在Advice方法中获取目标方法的参数
- Spring AOP——在通知(Advice)方法中获取目标方法的参数
- 使用spring的LocalVariableTableParameterNameDiscoverer获取类方法参数名称列表
- Spring中的AOP(五)——在Advice方法中获取目标方法的参数
- SpringAOP中,获取参数名称
- 用AOP拦截自定义注解并获取注解属性与上下文参数(基于Springboot框架)
- Spring中的AOP(五)——在Advice方法中获取目标方法的参数
- Spring 中 java 获取方法参数名称
- spring aop 获取方法的参数
- Spring获取方法参数名称的分析
- Spring中的AOP 在Advice方法中获取目标方法的参数(顶)
- Spring boot 通过AOP获取参数名称及参数值并对参数进行校验
- Spring中的AOP(四)——在Advice方法中获取目标方法的参数
- Spring之运行时获取controller参数名称的方法
- 记一些spring的aop中一些常用获取参数的方法