1. 程式人生 > >spring使用aspectj開發的增強型別註解和aspectj在spring中用到的切點函式

spring使用aspectj開發的增強型別註解和aspectj在spring中用到的切點函式

@Before

前置增強,相當於BeforeAdvice的功能,Before 註解類擁有兩個成員:

value:該成員用於定義切點;

argNames:由於無法通過java反射機制獲取方法入引數名,所以如果要在java編譯時未啟用除錯資訊或者需要在執行期間解析切點。就必須通過這個成員指定註解所標註增強的方法的引數名(注意兩者名字必須完全相同),多個引數名用逗號分隔。

@AfterReturning

後置增強,相當於AfterReturningAdvice,AfterReturning註解類擁有四個成員:

value:該成員用於定義切點;

pointcut:表示切點的資訊,如果顯示指定pointcut的值,它將覆蓋value的設定值,可以將pointcut成員看成是value的同義詞;

returning:將目標物件方法的返回值繫結給增強的方法;

argNames:如前所述。

@Around

環繞增強,相當於MethodInterceptor,Around註解類擁有兩個成員:

value:該成員用於定義切點;

argNames:如前所述。

@AfterThrowing

 丟擲增強,相當於ThrowsAdvice, AfterThrowing 註解類擁有4個成員:

value:該成員用於定義切點;

pointcut:表示切點的資訊,如果顯式指定pointcut值,它將覆蓋value的設定值,可以將pointcut成員看成是value的同義詞;

throwing:將丟擲的異常繫結到增強方法中;

argNames:如前所述。

@ After

Final 增強,不管是丟擲異常或者是正常退出,該增強都會得到執行,該增強沒有對應的增強介面,可以把它看成ThrowAdvice和AfterReturningAdvice的混合物,一般用於釋放資源,相當於try{}finally{}的控制流,After註解類擁有兩個成員:

value:該成員用於定義切點;

argNames:如前所述

@DeclareParents

引介增強,相當於IntroductionInterceptor,DeclareParents註解類擁有兩個成員:

value:該成員用於定義切點,它表示在哪個目標類上新增引介增強;

defaultImpl :預設的介面實現類。

切點方法:

execution() 方法匹配模式串 ,表示滿足某一匹配模式的所有目標類方法連線點點。

@annotation() 方法註解類名,表示標註了特定註解的目標方法連線點。

args() 類名 ,通過判別目標類方法執行時入參物件的型別定義指定連線點。

@args()型別註解類名, 通過判別目標方法執行時入參物件的類是否標註特定註解來指定連線點。

within()類名匹配串 ,表示特定域下所有連線點。

target()類名 ,假如目標類按型別匹配於指定類,則目標類的所有連線點匹配這個切點。

@within()型別註解類名, 假如目標類按型別匹配於某個類a,且類a標註了特定註解,則目標類的所有連線點都匹配這個切點

@target()型別註解類名 ,目標類標註了特定註解,則目標類所有連線點匹配該切點。

this() 類名