戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注
AOP-XML-前置通知发布
spring应用手册(第四部分)
这里说明一点,JoinPoint类在注解方式中已经介绍过,这里不再做介绍。
前置通知的发布Hellowrold中已经写过。这里再介绍以下参数:
我们可以在前置通知的业务方法中添加JoinPoint类型的参数,同样可以添加我们指定类型的参数:
案例:
Aspect类:
/**
* @author 戴着假发的程序员
* @company http://www.boxuewa.com
* @description
*/
public class DkAspect {
//前置通知
/**
*方法中传入我们指定的参数 msg
*/
public void before(JoinPoint joinPoint,String msg){
System.out.println("前置通知:参数"+msg);
}
}
配置:
<!-- 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” 使用“,”隔开,保证名字和顺序一致。