最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間: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方法
這樣當有什么事情,要找周杰倫(具體類)的時候,就必須先到經(jīng)紀人(代理類)那里處理,代理人在決定要不要與你見面(該方法要不要執(zhí)行)
1、歌手接口
復制代碼 代碼如下:

public interface Singer {

public abstract void sing();

public abstract String s();
}

2、具體的歌手
復制代碼 代碼如下:

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

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

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("開始事務");
System.out.println("判斷權限");

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

System.out.println("結束事務");
return o;
}
}

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

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

相關文章

  • jvm oom排查記錄剖析

    jvm oom排查記錄剖析

    這篇文章主要為大家介紹了jvm oom排查記錄剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • java同步鎖的正確使用方法(必看篇)

    java同步鎖的正確使用方法(必看篇)

    下面小編就為大家?guī)硪黄猨ava同步鎖的正確使用方法(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Java中的CompletableFuture原理與用法

    Java中的CompletableFuture原理與用法

    CompletableFuture 是由Java8引入的,這讓我們編寫清晰可讀的異步代碼變得更加容易,該類功能比Future 更加強大,在Java中CompletableFuture用于異步編程,異步通常意味著非阻塞,運行任務單獨的線程,與主線程隔離,這篇文章介紹CompletableFuture原理與用法,一起看看吧
    2024-01-01
  • 詳解Java 連接MongoDB集群的幾種方式

    詳解Java 連接MongoDB集群的幾種方式

    這篇文章主要介紹了詳解Java 連接MongoDB集群的幾種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • SpringMVC 中HttpMessageConverter簡介和Http請求415 的問題

    SpringMVC 中HttpMessageConverter簡介和Http請求415 的問題

    本文介紹且記錄如何解決在SpringMVC 中遇到415 Unsupported Media Type 的問題,并且順便介紹Spring MVC的HTTP請求信息轉換器HttpMessageConverter
    2016-07-07
  • Netty 輕松實現(xiàn)文件上傳功能

    Netty 輕松實現(xiàn)文件上傳功能

    今天我們來完成一個使用netty進行文件傳輸?shù)娜蝿铡T趯嶋H項目中,文件傳輸通常采用FTP或者HTTP附件的方式,對Netty 文件上傳功能感興趣的朋友一起看看吧
    2021-07-07
  • mybatis-plus雪花算法自動生成機器id原理及源碼

    mybatis-plus雪花算法自動生成機器id原理及源碼

    Mybatis-Plus是一個Mybatis的增強工具,它在Mybatis的基礎上做了增強,卻不做改變,Mybatis-Plus是為簡化開發(fā)、提高開發(fā)效率而生,但它也提供了一些很有意思的插件,比如SQL性能監(jiān)控、樂觀鎖、執(zhí)行分析等,下面一起看看mybatis-plus雪花算法自動生成機器id原理解析
    2021-06-06
  • java Date裝成英文String后,無法再轉回Date的解決方案

    java Date裝成英文String后,無法再轉回Date的解決方案

    本文介紹了java Date裝成英文String后,無法再轉回Date的解決方案。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • IDEA啟動報錯Internal?error.?Please?refer?to?https://jb.gg/ide/critical-startup-errors解決辦法

    IDEA啟動報錯Internal?error.?Please?refer?to?https://jb.gg/i

    這篇文章主要介紹了IDEA啟動報錯Internal?error.?Please?refer?to?https://jb.gg/ide/critical-startup-errors解決辦法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • java IP地址網(wǎng)段計算的示例代碼

    java IP地址網(wǎng)段計算的示例代碼

    這篇文章主要介紹了java IP地址網(wǎng)段計算的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03

最新評論

麻栗坡县| 沙坪坝区| 定边县| 潜江市| 桂平市| 法库县| 青岛市| 建昌县| 双辽市| 花莲市| 台江县| 灵川县| 大兴区| 兴宁市| 兴海县| 盘山县| 兴业县| 甘肃省| 临澧县| 合阳县| 含山县| 湖南省| 山东| 浮梁县| 抚宁县| 乌拉特前旗| 饶河县| 昌邑市| 丹寨县| 望城县| 永福县| 陆丰市| 上栗县| 梓潼县| 河间市| 大英县| 溧阳市| 古丈县| 华安县| 景宁| 册亨县|