Spring Aspect 获取请求参数

切片(Aspect)也就是Spring AOP 实现Aspect的主要步骤: 1、在哪里切入   。在哪个方法起作用   。什么时候起作用 2、起作用的时候执行什么处理逻辑 下面是代码实现 /** * 切...

切片(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  

  • 发表于 2019-05-13 15:00
  • 阅读 ( 514 )
  • 分类:网络文章

条评论

请先 登录 后评论
不写代码的码农
小编

篇文章

作家榜 »

  1. 小编 文章
返回顶部
部分文章转自于网络,若有侵权请联系我们删除