返回通知:
無論連接點正常返回還是拋出異常,後置通知都會執行。如果只想在連接點返回的時候記錄日誌,應使用返回通知代替後置通知。
在返回通知中,只需要在@AfterReturning註解中添加returning屬性,就可以訪問連接點的返回值。
必須在通知方法的簽名中添加一個同名參數,在運行時Spring AOP會通過這個參數傳遞給返回值。
在方法法正常結束後執行的代碼
返回通知是可以訪問到方法的返回值的!
@AfterReturning(value="execution(* com..Spring4.AOP.*.*(..))",
returning="result")
public void afterReturning(JoinPoint joinPoint, Object result){
String methodName = joinPoint.getSignature().getName();
System.out.println("The method " + methodName + " ends with " + result);
}
異常通知
只在連接點拋出異常時才執行異常通知
將 throwing 屬性添加到 @AfterThrowing 註解中, 也可以訪問連接點拋出的異常. Throwable 是所有錯誤和異常類的超類. 所以在異常通知方法可以捕獲到任何錯誤和異常.
如果只對某種特殊的異常類型感興趣, 可以將參數聲明爲其他異常的參數類型. 然後通知就只在拋出這個類型及其子類的異常時才被執行.
在目標方法出現異常時會執行的代碼.
可以訪問到異常對象; 且可以指定在出現特定異常時在執行通知代碼
@AfterThrowing(value="execution(* com..Spring4.AOP.*.*(..))",
throwing="e")
public void afterThrowing(JoinPoint joinPoint, Exception e){
String methodName = joinPoint.getSignature().getName();
System.out.println("The method " + methodName + " occurs excetion:" + e);
}