1. 程式人生 > >@Around環繞增強

@Around環繞增強

雖然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配置檔案

 

五、測試類

六、測試結果

可能的輸出結果: