1. 程式人生 > 實用技巧 >3.22 切面釋出-最終通知

3.22 切面釋出-最終通知

戴著假髮的程式設計師出品 抖音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 }

測試:

我們會發現雖然程式丟擲異常中斷,但是中斷之前先執行了後置通知。

如果還不明白可以看視訊講解。