3.22 切面釋出-最終通知
阿新 • • 發佈:2020-10-28
戴著假髮的程式設計師出品 抖音ID:戴著假髮的程式設計師歡迎關注
[檢視視訊教程]
最終通知也是在被增強方法完全執行結束之後執行,最終通知和後置通知的區別在於即使程式中途出現異常,中斷之前也會先執行最終通知。就類似於finallly程式碼塊。最終通知同樣可以傳入JoinPoint,作用和前置通知的一致,這裡就不贅述了。
看案例:
我們在Aspect中新增最終通知:
1 /** 2 * @author 戴著假髮的程式設計師 3 * 4 * @description 5 */ 6 @Component 7 @Aspect 8 public class DkAspect {9 @Pointcut("execution(* com.st.dk.demo8.service..*.*(..))") 10 public void pointcut1(){} 11 12 @After("pointcut1()") 13 public void after(){ 14 System.out.println("--後置通知--"); 15 } 16 }
在業務方法中丟擲異常,不做處理:
1 /** 2 * @author 戴著假髮的程式設計師 3 * 4 * @description 5 */ 6@Component 7 public class InfoService { 8 public String showInfo(String info){ 9 System.out.println("InfoService-showInfo輸出資訊:"+info); 10 String str = null; 11 str.trim();//丟擲空指標異常不做處理 12 return "info方法返回值"; 13 } 14 }
測試:
我們會發現雖然程式丟擲異常中斷,但是中斷之前先執行了後置通知。
如果還不明白可以看視訊講解。