文章目录
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是类级别的。