首先闡述幾個概念:
在org.aopalliance.intercept中存在下面一些概念:
接口種類
ConstructorInterceptor:攔截對象的構(gòu)造器調(diào)用
ConstructorInvocation:構(gòu)造器調(diào)用的描述,在調(diào)用者調(diào)用時給到攔截器涂乌。
FieldAccess:程序中屬性訪問描述极景。
FieldInterceptor:目標對象屬性訪問攔截器
Interceptor:攔截器
Inovcation:調(diào)用描述
Jointpoint:發(fā)生攔截的程序位置
MethodIntercetpor:方法攔截器
MethodInvocation:方法調(diào)用描述
MethodInovcation(interface):方法調(diào)用,在方法調(diào)用時會賦給攔截器使用凤瘦。方法調(diào)用是一個連接點,可以被方法攔截器攔截。有一個方法getMethod()臼勉,即獲取調(diào)用的方法,以及繼承于Invocation中的getArguments和繼承自Jointpoint的getStaticPart晤斩、getThis和proceed等方法闯两。getMethod方法是Jointpoint.getStaticPart()方法的類似實現(xiàn)(返回相同結(jié)果)。
Invocation(interface):表示程序中一次調(diào)用屯掖,invocation實質(zhì)是Jointpoint并且能被攔截器攔截瓢谢。內(nèi)有g(shù)etArguments方法,作用為獲取參數(shù)作為數(shù)組對象兔辅,可以更改此數(shù)組中的元素值以更改參數(shù)腊敲。
Joinpoint(interface):該接口表示一個普通的運行時連接點(在AOP技術(shù)中)。運行時連接點是在靜態(tài)連接點(例如维苔,程序中某一位置)上發(fā)生的事件碰辅。例如,一次調(diào)用是方法的運行時連接點介时。而連接點可以通過getStaticPart()方法獲取没宾。在攔截器攔截體系中,運行時攔截點是一個訪問對象(一個方法沸柔,一個構(gòu)造器或者一個屬性等)的細化處理循衰。它可被傳遞給安裝在靜態(tài)連接點上的攔截器中。[大致可以理解為靜態(tài)連接點就是代碼的具體位置褐澎,動態(tài)連接點就是攔截器存放的代碼位置]会钝。
Interceptor(interface):通用攔截器可以攔截在基本程序中發(fā)生的運行時事件。這些事件由連接點實現(xiàn)工三。運行時連接點可以是調(diào)用迁酸,字段訪問,異常...俭正。此接口不直接使用胁出。可以使用子接口攔截特定事件段审。例如全蝶,以下類實現(xiàn)一些特定的攔截器以實現(xiàn)調(diào)試器:
Advice(interface):Advice的標簽接口抑淫,它的實現(xiàn)可以使任何類型,例如Interceptor姥闪。