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 |