Java拦截器优先级

时间:2014-11-04 10:38:10

标签: java java-ee annotations interceptor

对于你们许多人来说,这可能是一个微不足道的问题,但我发誓我无法在其他任何地方找到答案:

假设我有一个类似这样的课程

@Interceptors(Interceptor1.class)
class myClass
{
    @Interceptors({Interceptor2.class, Interceptors3.class})
    public void myMethod() {...}
}

当myMethod被调用时,执行哪个拦截器以及按哪个顺序执行?

拦截器2,拦截器3 要么 拦截器1,拦截器2,拦截器3 要么 拦截器2,拦截器3,拦截器1?

提前致谢

1 个答案:

答案 0 :(得分:0)

引自Documentation

默认情况下,调用方法时拦截器的顺序为

  • 外部拦截器

  • 默认拦截器(如果存在)

  • 类拦截器(如果存在)

  • 方法拦截器(如果存在)

  • bean类上的拦截器方法(使用@AroundInvoke)

在每个组(默认,类,方法)中,拦截器的顺序是从@Interceptors注释中定义的从左到右,然后是XML拦截器。