首先闡述幾個概念:
在org.aopalliance.intercept中存在下面一些概念:
接口種類
ConstructorInterceptor:攔截對象的構造器調用
ConstructorInvocation:構造器調用的描述,在調用者調用時給到攔截器。
FieldAccess:程序中屬性訪問描述。
FieldInterceptor:目標對象屬性訪問攔截器
Interceptor:攔截器
Inovcation:調用描述
Jointpoint:發生攔截的程序位置
MethodIntercetpor:方法攔截器
MethodInvocation:方法調用描述
MethodInovcation(interface):方法調用,在方法調用時會賦給攔截器使用。方法調用是一個連接點,可以被方法攔截器攔截。有一個方法getMethod(),即獲取調用的方法,以及繼承于Invocation中的getArguments和繼承自Jointpoint的getStaticPart、getThis和proceed等方法。getMethod方法是Jointpoint.getStaticPart()方法的類似實現(返回相同結果)。
Invocation(interface):表示程序中一次調用,invocation實質是Jointpoint并且能被攔截器攔截。內有getArguments方法,作用為獲取參數作為數組對象,可以更改此數組中的元素值以更改參數。
Joinpoint(interface):該接口表示一個普通的運行時連接點(在AOP技術中)。運行時連接點是在靜態連接點(例如,程序中某一位置)上發生的事件。例如,一次調用是方法的運行時連接點。而連接點可以通過getStaticPart()方法獲取。在攔截器攔截體系中,運行時攔截點是一個訪問對象(一個方法,一個構造器或者一個屬性等)的細化處理。它可被傳遞給安裝在靜態連接點上的攔截器中。[大致可以理解為靜態連接點就是代碼的具體位置,動態連接點就是攔截器存放的代碼位置]。
Interceptor(interface):通用攔截器可以攔截在基本程序中發生的運行時事件。這些事件由連接點實現。運行時連接點可以是調用,字段訪問,異常...。此接口不直接使用。可以使用子接口攔截特定事件。例如,以下類實現一些特定的攔截器以實現調試器:
Advice(interface):Advice的標簽接口,它的實現可以使任何類型,例如Interceptor。