W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在一個已經(jīng)存在的方法上,如果我們想附加一些行為。這個時候最有力的方式就是通過 Aop。下面這段代碼就是給我們 TradeService 類增加 aop 的例子。
@Aop(CountInterceptor.class)
public class TradeService {
public boolean subStore(long itemId , int count){
...
}
}
接下來我們要編寫自己的 Aop 切面代碼。在 Hasor 中 Aop 的工作原理類似于攔截器,您可以配置一個或多個 Aop切面。如果是多個 Aop 切面,它們會被組裝成攔截器的形式執(zhí)行鏈?zhǔn)秸{(diào)用。
public class CountInterceptor implements MethodInterceptor {
public Object invoke(MethodInvocation invocation) throws Throwable {
try {
System.out.println("before... " + invocation.getMethod().getName());
Object returnData = invocation.proceed();
System.out.println("after...");
return returnData;
} catch (Exception e) {
System.out.println("throw...");
throw e;
}
}
}
上面的Aop例子是做用到整個類上的,如果我們只想對某一個方法做 Aop 而不是一整個類。那么可以把 @Aop 注解標(biāo)記到方法上而非類上,這樣 Aop切面 將只會在這個方法上起效。您不必編寫復(fù)雜的匹配表達式:例如:
public class TradeService {
@Aop(CountInterceptor.class)
public boolean subStore(long itemId , int count);
}
您也可以在類和方法上都標(biāo)記上 Aop切面,Hasor 遇到這種情況會自動按照(類優(yōu)先于方法)的規(guī)則執(zhí)行您的 Aop 切面。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: