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