Skip to main content

复合拦截器

复合拦截器,有两层含义

  • 可以写多个拦截器,同时拦截同一个切点。
  • 多个拦截器同时生效在不同的位置。

第一点,多个拦截器同时拦截一个切点。它们的生效顺序是先 A 后 B。代码如下:

例如
@Aop({SimpleInterceptorA.class, SimpleInterceptorB.class })
public class AopBean {
...
}

第二点,多个拦截器生效在不同位置:

@Aop(ClassInterceptor.class)
public class AopBean {
public String print() {
...
}

@Aop(MethodInterceptor.class)
public String echo(String sayMessage) {
return "echo :" + sayMessage;
}
}

在这个 case 中 print 方法调用时 ClassInterceptor 拦截器生效,当调用 echo 方法时 ClassInterceptorMethodInterceptor 会同时生效,生效顺序为,先 Class 后 Method。

如果还有一个全局 Aop 也在配置中,那么拦截器的生效顺序是:全局级 -> 类级 -> 方法级