Spring Aspect 获取请求参数

切片(Aspect)也就是Spring AOP

实现Aspect的主要步骤:

1、在哪里切入

  。在哪个方法起作用

  。什么时候起作用

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

下面是代码实现

/**
 * 切片Aspect @Around的使用
 * 1、添加 @Aspect 和@Component注解 
 * 2、方法是用@Around注解和传入ProceedingJoinPoint对象
 * 虽然切片可以拿到是调用方法时候传过来的参数和值
 * 但是....却拿不了原始的请求和响应对象了
 *
 *
 */
@Aspect
@Component
public class DemoAspect {
    /**
     * 切入点(主要是注解)
     *
     * 1. 哪些方法上起作用
     *
     * 2.在什么时候起作用
     *
     * 相关注解有4个
     * 1.@Before 调用方法前
     * 2.@After  调用方法后
     * 3.@Afterth 方法抛出异常的时候
     * 4.@Around 包括了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  

 

 

posted @ 2019-05-13 12:00  零落星尘  阅读(8567)  评论(0编辑  收藏  举报