<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    佳麗斯 加厚雙人/單人秋冬被子暖冬 羊毛被芯羊毛柔絲被特價(jià)包郵 憂憂魚(yú)冬外穿打底褲女秋冬厚長(zhǎng)褲女褲加絨加厚高腰彈力鉛筆褲靴褲 韓國(guó)代購(gòu)2013新款 韓版秋冬休閑女時(shí)尚磨破口袋衛(wèi)衣韓版學(xué)生裝 潮

    有時(shí),退一步,能一口氣進(jìn)幾步,只是這先退一步需要勇氣和自信。

    用心愛(ài)你,努力工作。

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      70 隨筆 :: 1 文章 :: 33 評(píng)論 :: 0 Trackbacks
    接下來(lái)學(xué)習(xí)有關(guān)AOP,首先了解有關(guān)代理機(jī)制(Spring實(shí)現(xiàn)AOP的一種方式)。代理分為兩種:靜態(tài)代理與動(dòng)態(tài)代理。
    通過(guò)一個(gè)例子來(lái)了解靜態(tài)代理。
     Lib包下載:
    http://www.ziddu.com/download/3555992/SpringAndaop.rar.html
    (1)一個(gè)簡(jiǎn)單的接口IHello

    package com.proxy;
    /**
     * 接口
     *
     * **/
    public interface IHello {
     public void hello(String name);

    }
    (2)實(shí)現(xiàn)類(lèi)HelloSpeaker

    package com.proxy;

    public class HelloSpeaker implements IHello{

     public void hello(String name) {
      System.out.println("Hello,"+name);
      
     }

    }
    (3)代理類(lèi)HelloProxy

    package com.proxy;
    import java.util.logging.*;
    /**
     * 靜態(tài)代理類(lèi),代理真正的實(shí)現(xiàn)類(lèi)HelloSpeaker來(lái)執(zhí)行
     *
     * */
    public class HelloProxy implements IHello{

     private Logger logger=Logger.getLogger(this.getClass().getName());
     
     private IHello helloObject;//接口聲明

     //構(gòu)造函數(shù)
     public HelloProxy(IHello helloObject)
     {
      this.helloObject=helloObject;
     }
     //接口實(shí)現(xiàn)方法
     public void hello(String name)
     {
      log("hello methods starts...");
      helloObject.hello(name);
      log("hello methods ends...");
     }
     private void log(String msg)
     {
      logger.log(Level.INFO,msg);
     }

    }

    (4)測(cè)試類(lèi)ProxyDemo

    package com.proxy;

    public class ProxyDemo {
     public static void main(String[] args)
     {
      //靜態(tài)代理模式
      HelloProxy proxy=new HelloProxy(new HelloSpeaker());
      proxy.hello("ducklyl");
     }

    }
    運(yùn)行測(cè)試類(lèi),結(jié)果為:
    Hello,ducklyl
    2007-10-28 10:52:26 com.proxy.HelloProxy log
    信息: hello methods starts...
    2007-10-28 10:52:27 com.proxy.HelloProxy log
    信息: hello methods ends...



    接下來(lái)介紹動(dòng)態(tài)代理
    (1)創(chuàng)建動(dòng)態(tài)代理類(lèi)LogHandler

    package com.proxy;

    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    import java.util.logging.*;
    /**
     *
     * 動(dòng)態(tài)代理類(lèi)
     * **/

    public class LogHandler implements InvocationHandler {

     private Logger logger = Logger.getLogger(this.getClass().getName());

     private Object delegate;

     public LogHandler()
     {
     }
     
     public Object bind(Object delegate) {
      this.delegate = delegate;
      log("bind starts...");
      return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
        delegate.getClass().getInterfaces(), this);
     }

     public Object invoke(Object proxy, Method method, Object[] args)
       throws Throwable {
      Object result = null;
      try {
       log("method starts..." + method);
       result = method.invoke(delegate, args);
       log("method ends..." + method);
      } catch (Exception e) {
       log(e.toString());
      }
      return null;
     }

     private void log(String msg) {
      logger.log(Level.INFO, msg);
     }

    }
    (2)創(chuàng)建測(cè)試類(lèi)ProxyTest

    package com.proxy;

    public class ProxyTest {
     public static void main(String[] args)
     {
      LogHandler logHandler=new LogHandler();
      //logHandler代理HelloSpeaker實(shí)例,調(diào)用hello
      IHello helloProxy=(IHello)logHandler.bind(new HelloSpeaker());
      helloProxy.hello("ducklyl");
     }

    }

    運(yùn)行測(cè)試類(lèi),結(jié)果為:
    Hello,ducklyl
    2007-10-28 11:24:59 com.proxy.LogHandler log
    信息: bind starts...
    2007-10-28 11:24:59 com.proxy.LogHandler log
    信息: method starts...public abstract void com.proxy.IHello.hello(java.lang.String)
    2007-10-28 11:24:59 com.proxy.LogHandler log
    信息: method ends...public abstract void com.proxy.IHello.hello(java.lang.String)


    posted on 2007-10-28 11:00 王生生 閱讀(969) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Spring
    森露2013新款豹紋打底衫 高領(lǐng) 女 長(zhǎng)袖 修身長(zhǎng)袖t恤女 加絨加厚冬 2013春秋新款女裝 潮修身大碼長(zhǎng)袖小西裝外套女 韓版中長(zhǎng)款小西裝 憂憂魚(yú)2013秋冬新款直筒褲女顯瘦長(zhǎng)褲加絨黑色休閑褲修身西褲女褲
    主站蜘蛛池模板: 亚洲一区二区三区乱码在线欧洲| 一二三四在线观看免费中文在线观看 | 国产亚洲精品资在线| 国产在线精品免费aaa片| 亚洲精品无码久久久久久久 | 国产福利电影一区二区三区,免费久久久久久久精 | 免费一级毛片不卡在线播放| a级毛片免费观看视频| 久久精品国产亚洲αv忘忧草| 亚洲av无码成人精品区在线播放 | 国产黄在线播放免费观看| 久久精品国产亚洲77777| 暖暖免费高清日本中文| 中文字幕在线成人免费看| 亚洲一区二区三区久久| 国产成人亚洲综合无码| 午夜福利不卡片在线播放免费| 无套内射无矿码免费看黄| 亚洲国产成人精品久久| 中文字幕亚洲乱码熟女一区二区 | 大地影院MV在线观看视频免费| 亚洲jizzjizz在线播放久| 亚洲中文字幕无码日韩| 天天摸天天碰成人免费视频| 精品国产污污免费网站| 男人免费视频一区二区在线观看| 亚洲欧洲日产国产最新| 亚洲人成精品久久久久| 曰皮全部过程视频免费国产30分钟 | 亚洲一区二区久久| 欧洲亚洲国产清在高| 亚洲国产精品丝袜在线观看| 99热在线精品免费全部my| 小日子的在线观看免费| 亚欧乱色国产精品免费视频| 亚洲国产区男人本色| 亚洲综合久久1区2区3区| 国产亚洲婷婷香蕉久久精品| 亚洲日本一区二区一本一道| 日韩免费视频网站| 成年女人毛片免费视频|