Spring日常笔记记录13--@Before 前置通知-方法有 JoinPoint 参数

在目标方法执行之前执行。被注解为前置通知的方法,可以包含一个 JoinPoint 类型参数。该类型的对象本身就是切入点表达式。通过该参数,可获取切入点表达式、方法签名、目标对象等。
不光前置通知的方法,可以包含一个 JoinPoint 类型参数,所有的通知方法均可包含该参数
    /**
     * 指定通知方法中的参数:JoinPoint
     * JoinPoint:业务方法,要加入切面功能的业务方法
     *      作用:可以在通知方法中获取方法执行时的信息,例如方法名称,方法的实参
     *      如果切面功能中需要用到方法的信息,就加入JoinPoint
     *      这个JoinPoint参数的值是由框架赋予,必须是第一位置的参数
     */
    @Before(value = "execution(* *..SomeServiceImpl.do*(..))")
    public void myBefore(JoinPoint jp){
        //获取方法的完整定义
        System.out.println("方法的签名(定义)="+jp.getSignature());
        System.out.println("方法的签名(定义)="+jp.getSignature().getName());
        //获取方法的实参
        Object args[] = jp.getArgs();
        for(Object arg : args){
            System.out.println("参数="+arg);
        }
        //就是你切面要执行的功能代码
        System.out.println("4前置通知,切面功能:在目标方法之前输出执行时间:"+new Date());
    }

 

运行结果:

 

 

posted @ 2021-07-27 23:52  Brack_Pearl  阅读(1627)  评论(0编辑  收藏  举报