1. 程式人生 > 實用技巧 >3.24 切面釋出-環繞通知

3.24 切面釋出-環繞通知

戴著假髮的程式設計師出品 抖音ID:戴著假髮的程式設計師歡迎關注

[檢視視訊教程]

所謂環繞通知就是在目標方法的前後可以通知增強,正因為這樣的情況,所以環繞通知可以阻止方法的執行,或者修改方法的返回值。

環繞通知也可以傳入一個引數ProceedingJoinPoint,ProceedingJoinPoint 是Joinpoint的一個子類,增強了一些方法,我們可以通過ProceedingJoinPoint 的proceed()呼叫被增強方法。

看案例:

修改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 /** 13 * 環繞通知,傳入引數ProceedingJoinPoint 14 * */ 15 @Around("pointcut1()") 16 public Object around(ProceedingJoinPoint joinPoint){
17 Object retVal = null; 18 System.out.println("--環繞通知開始--"); 19 //執行目標方法 20 try { 21 //這裡可以根據條件判斷是否要執行目標方法 22 retVal = joinPoint.proceed(); 23 //可以修改目標方法返回值 24 retVal = "環繞通知修改後的返回值"; 25 } catch (Throwable throwable) {
26 throwable.printStackTrace(); 27 } 28 System.out.println("--環繞通知結束--"); 29 return retVal; 30 } 31

測試:

注意,如果目標方法出現異常程式中斷,環繞通知就會只執行前半部分,後半部分就會執行。