2014-11-04 74 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攔截器。