4種定義切面的方式:函數
@AspectJ | <aop:aspect> | Advisor | <aop:advisor> | ||
增 強 類 型 |
前置加強 | @Before | <aop:before> | MethodBeforeAdvice | 同Advisor |
後置加強 | @AfterReturning | <aop:after-returning> | AfterReturningAdvice | 同Advisor | |
環繞加強 | @Around | <aop:around> | MethodInterceptor | 同Advisor | |
拋出異常加強 | @AfterThrowing | <aop:after-throwing> | ThrowsAdvice | 同Advisor | |
final加強 | @After | <aop:after> | 無對應接口 | 同Advisor | |
引介加強 | @DeclareParents | <aop:declare-parents> | IntroductionInterceptor | 同Advisor | |
切點定義 | 支持AspectJ切點表達式語法,能夠經過@Pointcut註解定義命名切點 | 支持AspectJ切點表達式語法,能夠經過<aop:pointcut>定義命名切點 | 直接經過基於Pointcut的實現類定義切點 | 基本上和<aop:aspect>相同,不過切點函數不能綁定參數 | |
鏈接點方法入參綁定 | 1)使用JoinPoint、ProceedingJoinPoint鏈接點對象; 2)使用切點函數指定參數名綁定 |
同@AspectJ <aop:after-returning> |
經過加強接口方法入參綁定 | 同Advisor | |
鏈接點方法返回值或拋出異常綁定 | 1)在後置加強中,使用@AfterReturning的returning成員綁定方法返回值中; 2)在拋出異常加強中,使用@AfterThrowing的throwing成員綁定方法拋出的異常 |
1)在後置加強中,使用<aop:after-returning>的returning屬性綁定方法返回值; 2)在拋出異常加強中,使用<aop:after-throwing>的throwing屬性綁定方法拋出的異常 |
經過加強接口方法入參綁定 | 同Advisor |