混合切面类型

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>在切点表达式中,须要注意不能使用切点函数绑定链接点方法入参,不然会产生错误。
相关文章
相关标签/搜索