欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

利用java實(shí)現(xiàn)動(dòng)態(tài)代理的方法-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名虛擬主機(jī)、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、南宮網(wǎng)站維護(hù)、網(wǎng)站推廣。

這篇文章將為大家詳細(xì)講解有關(guān)利用java實(shí)現(xiàn)動(dòng)態(tài)代理的方法,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

java 動(dòng)態(tài)代理的方法總結(jié)

AOP的攔截功能是由java中的動(dòng)態(tài)代理來(lái)實(shí)現(xiàn)的。說(shuō)白了,就是在目標(biāo)類的基礎(chǔ)上增加切面邏輯,生成增強(qiáng)的目標(biāo)類(該切面邏輯或者在目標(biāo)類函數(shù)執(zhí)行之前,或者目標(biāo)類函數(shù)執(zhí)行之后,或者在目標(biāo)類函數(shù)拋出異常時(shí)候執(zhí)行。不同的切入時(shí)機(jī)對(duì)應(yīng)不同的Interceptor的種類,如BeforeAdviseInterceptor,AfterAdviseInterceptor以及ThrowsAdviseInterceptor等)。

那么動(dòng)態(tài)代理是如何實(shí)現(xiàn)將切面邏輯(advise)織入到目標(biāo)類方法中去的呢?下面我們就來(lái)詳細(xì)介紹并實(shí)現(xiàn)AOP中用到的兩種動(dòng)態(tài)代理。

AOP的源碼中用到了兩種動(dòng)態(tài)代理來(lái)實(shí)現(xiàn)攔截切入功能:jdk動(dòng)態(tài)代理和cglib動(dòng)態(tài)代理。兩種方法同時(shí)存在,各有優(yōu)劣。jdk動(dòng)態(tài)代理是由Java內(nèi)部的反射機(jī)制來(lái)實(shí)現(xiàn)的,cglib動(dòng)態(tài)代理底層則是借助asm來(lái)實(shí)現(xiàn)的??偟膩?lái)說(shuō),反射機(jī)制在生成類的過(guò)程中比較高效,而asm在生成類之后的相關(guān)執(zhí)行過(guò)程中比較高效(可以通過(guò)將asm生成的類進(jìn)行緩存,這樣解決asm生成類過(guò)程低效問(wèn)題)。還有一點(diǎn)必須注意:jdk動(dòng)態(tài)代理的應(yīng)用前提,必須是目標(biāo)類基于統(tǒng)一的接口。如果沒(méi)有上述前提,jdk動(dòng)態(tài)代理不能應(yīng)用。由此可以看出,jdk動(dòng)態(tài)代理有一定的局限性,cglib這種第三方類庫(kù)實(shí)現(xiàn)的動(dòng)態(tài)代理應(yīng)用更加廣泛,且在效率上更有優(yōu)勢(shì)。。

1、定義接口和實(shí)現(xiàn)

package com.meituan.hyt.test3.service; 
 
 
public interface UserService { 
  public String getName(int id); 
 
  public Integer getAge(int id); 
} 

package com.meituan.hyt.test3.service.impl; 
 
import com.meituan.hyt.test3.service.UserService; 
 
 
public class UserServiceImpl implements UserService { 
  @Override 
  public String getName(int id) { 
    System.out.println("------getName------"); 
    return "Tom"; 
  } 
 
  @Override 
  public Integer getAge(int id) { 
    System.out.println("------getAge------"); 
    return 10; 
  } 
} 

文章標(biāo)題:利用java實(shí)現(xiàn)動(dòng)態(tài)代理的方法-創(chuàng)新互聯(lián)
地址分享:http://chinadenli.net/article30/ddgcso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管網(wǎng)站營(yíng)銷(xiāo)、小程序開(kāi)發(fā)電子商務(wù)、搜索引擎優(yōu)化標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化