spring中環繞通知的用法
環繞通知:
它是spring框架為我們提供的一種可以在代碼中手動控制增強部分什么時候執行的方式。
問題:
當我們配置了環繞通知之后,增強的代碼執行了,業務核心方法沒有執行。
分析:
通過動態代理我們知道在invoke方法中,有明確調用業務核心方法:method.invoke()。
我們配置的環繞通知中,沒有明確調用業務核心方法。
解決:
spring框架為我們提供了一個接口:ProceedingJoinPoint,它可以作為環繞通知的方法參數在環繞通知執行時,spring框架會為我們提供該接口的實現類對象,我們直接使用就行。該接口中有一個方法proceed(),此方法就相當於method.invoke()
代碼:
/**
* 環繞通知
*/
public void aroundInform(ProceedingJoinPoint pjp){
System.out.println("前置通知");
try {
pjp.proceed();
System.out.println("后置通知");
} catch (Throwable throwable) {
System.out.println("異常通知");
}finally {
System.out.println("最終通知");
}
}
