2014-11-04 49 views
1

这可能是很多的,你一个微不足道的问题,但我发誓,我找不到答案其他地方:Java的拦截优先

让我们说我有这样

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

时myMethod的一类被称为哪个拦截器被执行并按哪个顺序?

Interceptor2,Interceptor3 或 Interceptor1,Interceptor2,Interceptor3 或 Interceptor2,Interceptor3,Interceptor1?

预先感谢

回答

0

调用一个方法时,从Documentation

引用缺省情况下拦截器的顺序是

  • 外部拦截器

  • 默认拦截器,如果存在的话

  • 类拦截器,如果存在的话

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

  • 上bean类

    拦截器法(使用@AroundInvoke)

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