混合切面類型

4種定義切面的方式:函數

        1)基於@AspectJ註解的方式:
        2)基於<aop:aspect>的方式;
        3)基於<aop:advisor>的方式;
        4)基於Advisor類的方式。
        若是項目採用JDK5.0,能夠優先考慮使用@AspectJ;若是項目只能使用低版本的JDK,則能夠考慮使用<aop:aspect>;若是正在升級一個基於低版本Spring AOP開發的項目,則能夠考慮使用<aop:advisor>複用已經存在的Advice類;若是項目只能使用低版本的Spring,那麼就只能使用Advisor了。此外,值得注意的是一些切面只能使用基於API的Advisor方式進行構建,如基於ControlFlowPointcut的流程切面。
 
各類切面類型總結:

    @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
 
    從表中,咱們能夠看出<aop:advisor>實際上是<aop:aspect>和Advisor的混血兒,它的切點表示方法和<aop:aspect>相同,加強定義方式則和Advisor相同。鏈接點方法入參的綁定方式和Advisor同樣,經過加強接口方法入參進行調用,因此<aop:advisor>在切點表達式中,須要注意不能使用切點函數綁定鏈接點方法入參,不然會產生錯誤。
相關文章
相關標籤/搜索