真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java實(shí)現(xiàn)動(dòng)態(tài)代理的方法有哪些

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

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供建湖網(wǎng)站建設(shè)、建湖做網(wǎng)站、建湖網(wǎng)站設(shè)計(jì)、建湖網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、建湖企業(yè)網(wǎng)站模板建站服務(wù),十載建湖做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

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

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

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

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

下面是一個(gè)例子

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

package com.yasin.ProxyLearn;

public interface IStudy {

  public void learn();

  public String getKonwledge();

}

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

package com.yasin.ProxyLearn;

public class Study implements IStudy{

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

  public String getKonwledge() {

    return "Java真的強(qiáng)";
  }

}

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

package com.yasin.ProxyLearn;

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

public class StudyProxy implements InvocationHandler{

  //真實(shí)要被代理的對(duì)象
  private Object study;

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

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

    Object obj=null;

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

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


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

    return obj;
  }

}

測(cè)試類

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());

  }
}

關(guān)于Java實(shí)現(xiàn)動(dòng)態(tài)代理的方法有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


文章題目:Java實(shí)現(xiàn)動(dòng)態(tài)代理的方法有哪些
標(biāo)題鏈接:http://weahome.cn/article/jedhed.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部