4.8AOP-XML-最終通知
阿新 • • 發佈:2020-11-04
戴著假髮的程式設計師出品 抖音ID:戴著假髮的程式設計師歡迎關注
[檢視視訊教程]
所謂最終通知就是在方法完全執行結束之後在執行的通知,最終通知和後置通知的區別在於,無論業務方法是否出現異常中斷,最終通知都會執行,和finally程式碼塊的效果一致。
案例:
我們繼續讓業務方法丟擲異常中斷程式:
/** * @author 戴著假髮的程式設計師 * @company http://www.boxuewa.com * @description */ public class MessageBean { //輸出資訊的業務方法 public String printMessage(String msg){ System.out.println("MessageBean-printMessage:"+msg); String str = null; str.trim();//丟擲空指標異常 return msg; } }
在Aspect類中新增一個最終通知處理方法:
1 /** 2 * @author 戴著假髮的程式設計師 3 * @company http://www.boxuewa.com 4 * @description 5 */ 6 public class DkAspect { 7 8 /** 9 * 最終通知 10 */ 11public void after(JoinPoint joinPoint){ 12 System.out.println("最終通知。。。。。"); 13 } 14 }
在aop:config中新增最終通知的配置:
1 <!-- AOP配置 --> 2 <aop:config> 3 <!-- 申明AspectBean,引用我們註冊的dkAspect --> 4 <aop:aspect id="aspect" ref="dkAspcet"> 5 <!--宣告一個切入點,命名為pointcut1 --> 6 <!-- xml中不能使用 && ,邏輯與要使用and,--> 7 <!-- 如果我們的before增強方法中傳入了引數msg,我就要使用args(msg)限定切入點 --> 8 <aop:pointcut id="pointcut1" 9 expression="execution(* com.st.beans..*.*(..))"/> 10 <!-- 最終通知 --> 11 <aop:after method="after" pointcut-ref="pointcut1"/> 12 13 </aop:aspect> 14 </aop:config>
執行業務方法測試: