Spring Aspect 获取请求参数

Posted xiluonanfeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Aspect 获取请求参数相关的知识,希望对你有一定的参考价值。

切片(Aspect)也就是Spring AOP

实现Aspect的主要步骤:

1、在哪里切入

  。在哪个方法起作用

  。什么时候起作用

2、起作用的时候执行什么处理逻辑

下面是代码实现

/**
 * 切片Aspect @Around的使用
 * 1、添加 @Aspect 和@Component注解 
 * 2、方法是用@Around注解和传入ProceedingJoinPoint对象
 * 虽然切片可以拿到是调用方法时候传过来的参数和值
 * 但是....却拿不了原始的请求和响应对象了
 *
 *
 */
@Aspect
@Component
public class DemoAspect {
    /**
     * 切入点(主要是注解)
     *
     * 1. 哪些方法上起作用
     *
     * 2.在什么时候起作用
     *
     * 相关注解有4个
     * [email protected] 调用方法前
     * [email protected]  调用方法后
     * [email protected] 方法抛出异常的时候
     * [email protected] 包括了before、after、afterth 所以我们一般使用around
     *
     *
     * @Around 有专门的表达式 见官方文档 https://docs.spring.io/spring/docs/5.2.0.BUILD-SNAPSHOT/spring-framework-reference/core.html#aop-ataspectj
     * 有关切入点的语法和使用
     *
     *  当前例子是在com.xiluo.web.controller.DemoController里面的任何方法
     *  注意的是要传入ProceedingJoinPoint对象,这个对象记录了你当前拦截到的方法的信息
     */
    @Around("execution(* com.xiluo.web.controller.DemoController.*(..))")
    public Object handelControllerMethod(ProceedingJoinPoint point) throws Throwable {
        System.out.println("aspect start ");
      
        //获取参数
        Object[] args = point.getArgs();

        for (Object arg : args) {
            System.out.println("arg ==>" + arg);
        }

        //去调用被拦截的方法
        Object proceed = point.proceed();

        return proceed;
    }

}

 @Around注解

详细使用见官方文档:https://docs.spring.io/spring/docs/5.2.0.BUILD-SNAPSHOT/spring-framework-reference/core.html#aop-ataspectj  

技术图片

 

技术图片

 

以上是关于Spring Aspect 获取请求参数的主要内容,如果未能解决你的问题,请参考以下文章

Spring AOP中@Aspect拦截介绍(一)

如何在Aspect的注解参数中获取方法并获取方法执行的结果

spring的aop怎么获取切点参数

SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-009-带参数的ADVICE2 配置文件为XML

spring boot架构设计——权限验证及API接口统一返回格式

Spring基于@Aspect的AOP配置