JAVA 反射(二)動態(tài)代理

概念

在運行期間動態(tài)的創(chuàng)建接口的實現
通過生成的代理類墨吓,可以完成對接口的實現。

關鍵類和接口

處理接口方法的接口 InvocationHandler
代理生成類 Proxy

典型代碼

創(chuàng)建Foo接口的代理實現

創(chuàng)建某一接口 Foo 的代理:
     InvocationHandler handler = new MyInvocationHandler(...);
     Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),
                                          new Class[] { Foo.class },
                                          handler);

步驟

1.對接口方法的處理
首先需要實現InvocationHandler接口,重寫invoke方法

public class MyInvocationHandler implements InvocationHandler{
  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
      //..所有方法的調用都會在這里執(zhí)行
  }
}

2.通過Proxy的靜態(tài)方法生成代理類萝毛,或代理對象。

代理對象

Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),
                                          new Class[] { Foo.class },
                                          handler);

代理類方式

     InvocationHandler handler = new MyInvocationHandler(...);
     Class proxyClass = Proxy.getProxyClass(
         Foo.class.getClassLoader(), new Class[] { Foo.class });
     Foo f = (Foo) proxyClass.
         getConstructor(new Class[] { InvocationHandler.class }).
         newInstance(new Object[] { handler });

常見用例

動態(tài)代理常被應用到以下幾種情況中

數據庫連接以及事物管理
單元測試中的動態(tài)Mock對象
自定義工廠與依賴注入(DI)容器之間的適配器
類似AOP的方法攔截器

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末喊式,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子萧朝,更是在濱河造成了極大的恐慌岔留,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件检柬,死亡現場離奇詭異献联,居然都是意外死亡,警方通過查閱死者的電腦和手機何址,發(fā)現死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門里逆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人头朱,你說我怎么就攤上這事运悲×浼酰” “怎么了项钮?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長希停。 經常有香客問我烁巫,道長,這世上最難降的妖魔是什么宠能? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任亚隙,我火速辦了婚禮,結果婚禮上违崇,老公的妹妹穿的比我還像新娘阿弃。我一直安慰自己,他們只是感情好羞延,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布渣淳。 她就那樣靜靜地躺著,像睡著了一般伴箩。 火紅的嫁衣襯著肌膚如雪入愧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天嗤谚,我揣著相機與錄音棺蛛,去河邊找鬼。 笑死巩步,一個胖子當著我的面吹牛旁赊,可吹牛的內容都是我干的。 我是一名探鬼主播椅野,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼终畅,長吁一口氣:“原來是場噩夢啊……” “哼钞钙!你這毒婦竟也來了?” 一聲冷哼從身側響起声离,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤芒炼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后术徊,有當地人在樹林里發(fā)現了一具尸體本刽,經...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年赠涮,在試婚紗的時候發(fā)現自己被綠了子寓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡笋除,死狀恐怖斜友,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情垃它,我是刑警寧澤鲜屏,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站国拇,受9級特大地震影響洛史,放射性物質發(fā)生泄漏。R本人自食惡果不足惜酱吝,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一也殖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧务热,春花似錦忆嗜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至该镣,卻和暖如春冻璃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背损合。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工省艳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嫁审。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓跋炕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親律适。 傳聞我的和親對象是個殘疾皇子辐烂,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內容

  • https://blog.csdn.net/luanlouis/article/details/24589193 ...
    小陳阿飛閱讀 865評論 1 1
  • 原文: Dyanmic Proxy Classes 介紹 一個動態(tài)代理類是實現了多個接口存在于運行時的類遏插,這樣,一...
    半黑月缺閱讀 943評論 0 0
  • 如刀劍樣的北風 殘忍的斬下秋的尾巴 伏在窗口欲蘸點火鍋的麻辣 2016.11.06.
    曹天成閱讀 351評論 3 3
  • 快放假了纠修,許老四要把被子神馬的行李放她大姨家(學校家屬院)胳嘲,于是為了方便搬運,向我借自行車(那時常往返大姐家扣草,所以...
    娜娜vikitter閱讀 247評論 0 1