4.5 AOP-XML-前置通知发布

戴着假发的程序员出品  抖音ID:戴着假发的程序员  欢迎关注

[查看视频教程]

这里说明一点,JoinPoint类在注解方式中已经介绍过,这里不再做介绍。

前置通知的发布Hellowrold中已经写过。这里再介绍以下参数:

我们可以在前置通知的业务方法中添加JoinPoint类型的参数,同样可以添加我们指定类型的参数:

案例:

Aspect类:

 1 /**
 2  * @author 戴着假发的程序员
 3  * @company http://www.boxuewa.com
 4  * @description
 5  */
 6 public class DkAspect {
 7     //前置通知
 8     /**
 9      *方法中传入我们指定的参数  msg
10      */
11     public void before(JoinPoint joinPoint,String msg){
12         System.out.println("前置通知:参数"+msg);
13     }
14 }

配置:

<!-- AOP配置 -->
<aop:config>
    <!-- 申明AspectBean,引用我们注册的dkAspect -->
    <aop:aspect id="aspect" ref="dkAspcet">
        <!-- 声明一个切入点,命名为pointcut1 -->
        <!-- xml中不能使用 && ,逻辑与要使用and,-->
        <!-- 如果我们的before增强方法中传入了参数msg,我就要使用args(msg)限定切入点 -->
        <aop:pointcut id="pointcut1"
                      expression="args(msg) and execution(* com.st.dk.demo9.beans..*.*(..))"/>
        <!--配置两个前置通知,利用pointcut-ref引用上面申明的切入点-->
        <!-- 如果要before方法接受msg参数,我们就要在通知配置中使用arg-names指定参数名,如果有多个就使用“,”隔开 -->
        <aop:before method="before" arg-names="msg" pointcut-ref="pointcut1"/>
    </aop:aspect>
</aop:config>

执行业务方法测试:

详细图解:

注意,如果有多个参数,则args(parm1,parm2), arg-names="parm1,parm2" 使用“,”隔开,保证名字和顺序一致。

posted @ 2020-11-04 09:09  戴着假发的程序员0-1  阅读(108)  评论(0)    收藏  举报