欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java代理 jdk動態(tài)代理應(yīng)用案列

 更新時間:2012年11月28日 10:16:14   作者:  
java代理有jdk動態(tài)代理、cglib代理,這里只說下jdk動態(tài)代理,jdk動態(tài)代理主要使用的是java反射機制,需要了解的朋友可以參考下
java代理有jdk動態(tài)代理、cglib代理,這里只說下jdk動態(tài)代理,jdk動態(tài)代理主要使用的是java反射機制(既java.lang.reflect包)
原理是(歌手、經(jīng)紀人做例子):
建立一個公共的接口,比如:歌手public interface Singer;
用具體的類實現(xiàn)接口,比如:周杰倫,他是歌手所以實現(xiàn)Singer這個類,class MySinger implements Singer
建立代理類,這里也就是經(jīng)紀人,他需要實現(xiàn)InvocationHandler類,并重寫invoke方法
這樣當(dāng)有什么事情,要找周杰倫(具體類)的時候,就必須先到經(jīng)紀人(代理類)那里處理,代理人在決定要不要與你見面(該方法要不要執(zhí)行)
1、歌手接口
復(fù)制代碼 代碼如下:

public interface Singer {

public abstract void sing();

public abstract String s();
}

2、具體的歌手
復(fù)制代碼 代碼如下:

public class MySinger implements Singer {
public void sing() {
// TODO Auto-generated method stub
System.err.println("唱歌。。。。");
}
}

3、代理類(經(jīng)紀人)
復(fù)制代碼 代碼如下:

public class agent implements InvocationHandler{
public Object target;

//綁定
public Object bind(Object target){
this.target=target;
//必須放回Proxy
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}

//重新
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object o =null;
System.out.println("開始事務(wù)");
System.out.println("判斷權(quán)限");

o = method.invoke(target, args);//執(zhí)行方法

System.out.println("結(jié)束事務(wù)");
return o;
}
}

4、測試(為什么要間接口能,下面你會發(fā)現(xiàn)代理返回的是他們的接口類,這要一個代理類,就可以代理多個類,只要該類是同個一個接口的是實現(xiàn))
復(fù)制代碼 代碼如下:

public class Test {
public static void main(String[] args) {
//
agent a =new agent();
Singer s= (Singer) a.bind(new MySinger());
s.sing();
}
}

相關(guān)文章

  • 項目管理利器-Maven(Windows安裝)圖文教程

    項目管理利器-Maven(Windows安裝)圖文教程

    下面小編就為大家?guī)硪黄椖抗芾砝?Maven(Windows安裝)圖文教程。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • SpringBoot 實現(xiàn)定時任務(wù)的方法詳解

    SpringBoot 實現(xiàn)定時任務(wù)的方法詳解

    這篇文章主要介紹了SpringBoot 實現(xiàn)定時任務(wù)的方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Spring?Boot實現(xiàn)分布式系統(tǒng)中的服務(wù)發(fā)現(xiàn)和注冊(最新推薦)

    Spring?Boot實現(xiàn)分布式系統(tǒng)中的服務(wù)發(fā)現(xiàn)和注冊(最新推薦)

    在本文中,我們深入探討了Spring?Boot如何實現(xiàn)分布式系統(tǒng)中的服務(wù)發(fā)現(xiàn)和注冊,我們使用Eureka作為服務(wù)注冊中心,Ribbon作為負載均衡器,Hystrix作為熔斷器,成功地實現(xiàn)了服務(wù)發(fā)現(xiàn)、服務(wù)注冊、負載均衡和服務(wù)熔斷等功能,需要的朋友參考下吧
    2023-06-06
  • Springboot pom項目間接依賴包版本與預(yù)期不符原因解決分析

    Springboot pom項目間接依賴包版本與預(yù)期不符原因解決分析

    這篇文章主要介紹了Springboot pom項目間接依賴包版本與預(yù)期不符原因解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 解決Spring Mvc中對象綁定參數(shù)重名的問題

    解決Spring Mvc中對象綁定參數(shù)重名的問題

    最近在工作中遇到了參數(shù)綁定的一個問題,發(fā)現(xiàn)網(wǎng)上這方面的資料較少,索性自己來總結(jié)下,下面這篇文章主要給大家介紹了關(guān)于如何解決Spring Mvc中對象綁定參數(shù)重名問題的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • 解析Idea為什么不推薦使用@Autowired進行Field注入

    解析Idea為什么不推薦使用@Autowired進行Field注入

    這篇文章主要介紹了Idea不推薦使用@Autowired進行Field注入的原因,網(wǎng)上文章大部分都是介紹兩者的區(qū)別,沒有提到為什么,當(dāng)時想了好久想出了可能的原因,今天來總結(jié)一下
    2022-05-05
  • 在Spring-Boot中如何使用@Value注解注入集合類

    在Spring-Boot中如何使用@Value注解注入集合類

    這篇文章主要介紹了在Spring-Boot中如何使用@Value注解注入集合類的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 微服務(wù)分布式架構(gòu)實現(xiàn)日志鏈路跟蹤的方法

    微服務(wù)分布式架構(gòu)實現(xiàn)日志鏈路跟蹤的方法

    在現(xiàn)有的系統(tǒng)中,由于大量的其他用戶/其他線程的日志也一起輸出穿行其中導(dǎo)致很難篩選出指定請求的全部相關(guān)日志。那我們?nèi)绾蝸硖幚砟兀繋е@個問題一起通過本文學(xué)習(xí)下吧
    2021-08-08
  • Eureka源碼核心類預(yù)備知識

    Eureka源碼核心類預(yù)備知識

    這篇文章主要為大家介紹了Eureka源碼核心類預(yù)備知識詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • java實現(xiàn)爬蟲爬網(wǎng)站圖片的實例代碼

    java實現(xiàn)爬蟲爬網(wǎng)站圖片的實例代碼

    這篇文章主要介紹了java實現(xiàn)爬蟲爬網(wǎng)站圖片的實例代碼,需要的朋友可以參考下
    2018-06-06

最新評論