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

詳解Java動態(tài)代理的實現(xiàn)及應(yīng)用

 更新時間:2017年09月13日 10:15:35   作者:_Yasin  
這篇文章主要介紹了詳解Java動態(tài)代理的實現(xiàn)及應(yīng)用的相關(guān)資料,希望通過本文大家能理解掌握J(rèn)ava動態(tài)代理的使用方法,需要的朋友可以參考下

詳解Java動態(tài)代理的實現(xiàn)及應(yīng)用

Java動態(tài)代理其實寫日常業(yè)務(wù)代碼是不常用的,但在框架層一起RPC框架的客戶端是非常常見及重要的。spring的核心思想aop的底層原理實現(xiàn)就使用到了java的動態(tài)代理技術(shù)。

使用代理可以實現(xiàn)對象的遠(yuǎn)程調(diào)用以及aop的實現(xiàn)。

java的動態(tài)代理的實現(xiàn),主要依賴InvoctionHandler(接口)和Proxy(類)這兩個。

下面是一個例子

實現(xiàn)的代理的一般需要有個接口

package com.yasin.ProxyLearn;

public interface IStudy {

  public void learn();

  public String getKonwledge();

}

該接口的實現(xiàn)的類

package com.yasin.ProxyLearn;

public class Study implements IStudy{

  public void learn() {
    System.out.println("我要開始學(xué)習(xí)了!");
  }

  public String getKonwledge() {

    return "Java真的強";
  }

}

代理類,該類需要實現(xiàn)InvacationHandler接口

package com.yasin.ProxyLearn;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class StudyProxy implements InvocationHandler{

  //真實要被代理的對象
  private Object study;

  public StudyProxy(Object study){
    this.study=study;
  }

  /**
   * 當(dāng)被代理對象執(zhí)行自己的方法時,便會執(zhí)行這個方法
   */
  public Object invoke(Object object, Method method, Object[] args) throws Throwable {

    Object obj=null;

    System.out.println("代理執(zhí)行前我可以執(zhí)行一些操作");

    //執(zhí)行被代理對象的方法
    obj = method.invoke(study, args);


    System.out.println("代理執(zhí)行后我還可以執(zhí)行一些操作");

    return obj;
  }

}

測試類

package com.yasin.JavaLearn;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;

import com.yasin.ProxyLearn.IStudy;
import com.yasin.ProxyLearn.Study;
import com.yasin.ProxyLearn.StudyProxy;

/**
 * Hello world!
 *
 */
public class App {

  public static void main(String[] args) {

    IStudy study = new Study();

    InvocationHandler handler = new StudyProxy(study);

    IStudy proxyStudy =(IStudy)Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class[] {IStudy.class}, handler);

    proxyStudy.learn();

    System.out.println(proxyStudy.getKonwledge());

  }
}

以上就是java動態(tài)代理的基礎(chǔ)使用,在spring aop及rpc的遠(yuǎn)程服務(wù)端的實現(xiàn)要比這復(fù)雜下,以后會在深入探討的。

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 數(shù)據(jù)庫阿里連接池 druid配置詳解

    數(shù)據(jù)庫阿里連接池 druid配置詳解

    本篇文章主要介紹了數(shù)據(jù)庫阿里連接池 druid配置詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • SpringCloud Zuul在何種情況下使用Hystrix及問題小結(jié)

    SpringCloud Zuul在何種情況下使用Hystrix及問題小結(jié)

    這篇文章主要介紹了SpringCloud Zuul在何種情況下使用Hystrix 及問題小結(jié),感興趣的朋友跟隨小編一起看看吧
    2018-11-11
  • SpringBoot后端上傳文件類型檢測方式

    SpringBoot后端上傳文件類型檢測方式

    這篇文章主要介紹了SpringBoot后端上傳文件類型檢測方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Maven?繼承父工程時的relativePath標(biāo)簽詳細(xì)解析

    Maven?繼承父工程時的relativePath標(biāo)簽詳細(xì)解析

    這篇文章主要介紹了Maven?繼承父工程時的relativePath標(biāo)簽解析,通過本文學(xué)習(xí)你需要注意子模塊想要用父模塊pom中的版本,請注意配置relativePath屬性,需要的朋友可以參考下
    2022-12-12
  • IDEA如何自動生成serialVersionUID的設(shè)置

    IDEA如何自動生成serialVersionUID的設(shè)置

    這篇文章主要介紹了IDEA如何自動生成 serialVersionUID 的設(shè)置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • java簡單自定義異常實例代碼

    java簡單自定義異常實例代碼

    這篇文章主要為大家詳細(xì)介紹了java簡單自定義異常實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 淺談Java多線程實現(xiàn)及同步互斥通訊

    淺談Java多線程實現(xiàn)及同步互斥通訊

    下面小編就為大家?guī)硪黄獪\談Java多線程實現(xiàn)及同步互斥通訊。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Java maven詳細(xì)介紹

    Java maven詳細(xì)介紹

    今天給大家復(fù)習(xí)一下Java基礎(chǔ)知識,簡單介紹Maven,文中有非常詳細(xì)的解釋,對Java初學(xué)者很有幫助喲,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09
  • 詳解SpringBoot中添加@ResponseBody注解會發(fā)生什么

    詳解SpringBoot中添加@ResponseBody注解會發(fā)生什么

    這篇文章主要介紹了詳解SpringBoot中添加@ResponseBody注解會發(fā)生什么,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • java中獲取hashmap中的所有key方式

    java中獲取hashmap中的所有key方式

    這篇文章主要介紹了java中獲取hashmap中的所有key方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評論

准格尔旗| 大丰市| 米林县| 永康市| 子长县| 大竹县| 库尔勒市| 明溪县| 喜德县| 威信县| 太仆寺旗| 遂昌县| 灌云县| 娱乐| 印江| 乳山市| 柳河县| 洛扎县| 咸宁市| 苏尼特右旗| 广西| 葵青区| 定州市| 商南县| 栖霞市| 花莲市| 西峡县| 丹寨县| 泉州市| 铜川市| 菏泽市| 涪陵区| 政和县| 沽源县| 乌恰县| 台山市| 丰城市| 慈利县| 汶川县| 许昌市| 湛江市|