@Around環繞增強
阿新 • • 發佈:2018-12-05
雖然Around功能強大,但通常需要線上程安全的環境下使用。因此,如果使用普通的Before、AfterReturing增強方法就可以解決的事情,就沒有必要使用Around增強處理了。
Proceedingjoinpoint 繼承了 JoinPoint 。是在JoinPoint的基礎上暴露出 proceed 這個方法。proceed很重要,這個是aop代理鏈執行的方法。暴露出這個方法,就能支援 aop:around 這種切面(而其他的幾種切面只需要用到JoinPoint,這跟切面型別有關), 能決定是否走代理鏈還是走自己攔截的其他邏輯
一、專案結構
二、定義切面類、連線點註解類
PointCut連線點註解類
說明:
這是一個註解型別:@interface
類中設定了一個methodName屬性;
定義切面類
說明:
- @Around定義了此方法為 Around增強處理方法;
- @annotation(around):引數around應該與增強處理方法中的引數名保持一致,該宣告指定了pointcut連線點,也可以使用其他方式,如:
pointcut="execution(* org.crazyit.app.service.impl.*.*(..))";
- point.proceed()呼叫了目標方法,並獲取其返回值;
三、為待增強的方法--添加註解宣告
在上面定義@Around增強時,通過@annotation() 方式指定了pointcut,其中方法引數為連線點註解類aroundAuthority,
如果需要對某一方法進行增強,只需要在相應的方法上新增上此註解即可,如下:
四、AspectJ配置檔案
六、測試結果
可能的輸出結果: