文章目錄
AOP學習
AOP註解詳解
@Aspect
添加這個註解後,代表當前類可以被Spring管理。並且作爲切面。
@Before
前置增強,在有@Aspect的類中的方法添加此註解,就可以在方法中對切點進行方法的前置增強。相當於Advice接口下BeforeAdvice接口的作用。
@AfterReturning
後置增強,在有@Aspect的類中的方法添加此註解,就可以在方法中對切點進行方法的後置增強。方法正常退出後會執行此方法。相當於Advice接口下AfterReturningAdvice接口的作用。
@AfterThrowing
異常拋出增強,在有@Aspect的類中的方法添加此註解,就可以在方法中對切點進行方法的異常拋出增強。方法拋出異常後會執行此方法。相當於ThrowsAdvice接口的作用。
@After
final增強,無論是方法拋出異常還是正常執行完畢,都會執行@After註解下的方法。
@Around
環繞增強,這個是最常用的一種註解之一,通過調用切點的proceed方法來執行原方法,在調用前後可以進行切點的邏輯添加。相當於MethodInterceptor。
@DeclareParents
引介增強,相當於IntroductionInterceptor。在不改變原有方法的基礎上卻可以增加新的方法。IntroductionInterceptor繼承了MethodInterceptor和DynamicIntroductionAdvice接口,其中implementsInterface()方法(繼承自DynamicIntroductionAdvice)如果返回true,表示目前的 IntroductionInterceptor實現了給定的接口(也就是要額外增加行爲的接口),此時要使用invoke()調用該接口上的方法,讓目標執行額外的行爲。需要注意的是不可能使用MethodInvocation的proceed()方法,因爲要執行的是類原來沒有的行爲,proceed()方法沒有意義。
@annotation
註解註解,參數值可以填寫一個註解,這樣可以切所有所有被註解的方法。
@args
參數註解,該函數接收一個註解類的類名,當方法的運行時入參對象標註了指定的註解時,匹配切點。
@within
這個通常和@annotation進行比較,@annotation是方法級別的,@within是類級別的。