W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Interceptor 可以對方法進(jìn)行攔截,并提供機(jī)會(huì)在方法的前后添加切面代碼,實(shí)現(xiàn) AOP 的 核心目標(biāo)。Interceptor 接口僅僅定了一個(gè)方法 void intercept(Invocation inv)。以下是簡單的示例:
public class DemoInterceptor implements Interceptor {
public void intercept(Invocation inv) { System.out.println("Before method invoking"); inv.invoke();
System.out.println("After method invoking");
}
}
以上代碼中的 DemoInterceptor 將攔截目標(biāo)方法,并且在目標(biāo)方法調(diào)用前后向控制臺輸出 文本。inv.invoke()這一行代碼是對目標(biāo)方法的調(diào)用,在這一行代碼的前后插入切面代碼可以很 方便地實(shí)現(xiàn) AOP。
Invocation 作為 Interceptor 接口 intercept 方法中的唯一參數(shù),提供了很多便利的方法在攔 截器中使用。以下為 Invocation 中的方法:
方法 | 描述 |
void invoke() | 傳遞本次調(diào)用,調(diào)用剩下的攔截器與目標(biāo)方法 |
Controller getController() | 獲取 Action 調(diào)用的 Controller 對象(僅用于控制層攔截) |
String getActionKey() | 獲取 Action 調(diào)用的 action key 值(僅用于控制層攔截) |
String getControllerKey() | 獲取 Action 調(diào)用的 controller key 值(僅用于控制層攔截) |
String getViewPath() | 獲取 Action 調(diào)用的視圖路徑(僅用于控制層攔截) |
<T> T getTarget() | 獲取被攔截方法所屬的對象 |
Method getMethod() | 獲取被攔截方法的 Method 對象 |
String getMethodName() | 獲取被攔截方法的方法名 |
Object[] getArgs() | 獲取被攔截方法的所有參數(shù)值 |
Object getArg(int) | 獲取被攔截方法指定序號的參數(shù)值 |
<T> T getReturnValue() | 獲取被攔截方法的返回值 |
void setArg(int) | 設(shè)置被攔截方法指定序號的參數(shù)值 |
void setReturnValue(Object) | 設(shè)置被攔截方法的返回值 |
boolean isActionInvocation() | 判斷是否為 Action 調(diào)用,也即是否為控制層攔截 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: