4.6 AOP-XML-后置通知发布
戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注
[查看视频教程]
所谓后置通知就是在目标方法执行结束之后进行业务增强。
我们可以在后置通知的增强方法中传入JoinPoint和业务方法的返回值。当然也可以什么都不传。
看案例:
在Aspect类中添加一个后置通知的方法:
1 /** 2 * @author 戴着假发的程序员 3 * @company http://www.boxuewa.com 4 * @description 5 */ 6 public class DkAspect { 7 8 /** 9 * 后置通知 10 * 使用 retVal接受被增强方法的返回值,如果没有返回值retval就是null 11 */ 12 public void afterReturning(JoinPoint joinPoint,Object retVal){ 13 System.out.println("后置通知,目标方法的返回值:"+retVal); 14 } 15 }
在aop:config中添加一个后置通知的配置:
1 <!-- AOP配置 --> 2 <aop:config> 3 <!-- 申明AspectBean,引用我们注册的dkAspect --> 4 <aop:aspect id="aspect" ref="dkAspcet"> 5 <!-- 声明一个切入点,命名为pointcut1 --> 6 <!-- 如果我们的before增强方法中传入了参数msg,我就要使用args(msg)限定切入点 --> 7 <aop:pointcut id="pointcut1" 8 expression="execution(* com.st.beans..*.*(..))"/> 9 <!-- 后置通知 --> 10 <aop:after-returning method="afterReturning" pointcut-ref="pointcut1" returning="retVal"/> 11 </aop:aspect> 12 </aop:config>
执行业务方法执行结果:
注意,如果业务方法出现异常导致程序中断,后置通知就不会再执行。
案例:
我们给业务方法添加一个异常,并且不做处理:
1 /** 2 * @author 戴着假发的程序员 3 * @company http://www.boxuewa.com 4 * @description 5 */ 6 public class MessageBean { 7 //输出信息的业务方法 8 public String printMessage(String msg){ 9 System.out.println("MessageBean-printMessage:"+msg); 10 String str = null; 11 str.trim();//抛出空指针异常 12 return msg; 13 } 14 }
执行业务方法测试结果:
注意,如果业务方法中的异常被处理,程序没有中断,继续执行了,那么后置处理会继续执行。
我是戴着假发的程序员,分享技术,分享经验,如果要转载,请注明:出自戴着假发的程序员