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

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

          用心愛你,努力工作。

            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)代理。
          通過一個(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)類HelloSpeaker

          package com.proxy;

          public class HelloSpeaker implements IHello{

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

          }
          (3)代理類HelloProxy

          package com.proxy;
          import java.util.logging.*;
          /**
           * 靜態(tài)代理類,代理真正的實(shí)現(xiàn)類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è)試類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è)試類,結(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)代理類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)代理類
           * **/

          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è)試類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è)試類,結(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 王生生 閱讀(976) 評(píng)論(0)  編輯  收藏 所屬分類: Spring
          森露2013新款豹紋打底衫 高領(lǐng) 女 長(zhǎng)袖 修身長(zhǎng)袖t恤女 加絨加厚冬 2013春秋新款女裝 潮修身大碼長(zhǎng)袖小西裝外套女 韓版中長(zhǎng)款小西裝 憂憂魚2013秋冬新款直筒褲女顯瘦長(zhǎng)褲加絨黑色休閑褲修身西褲女褲
          主站蜘蛛池模板: 襄汾县| 沁阳市| 临城县| 蒙阴县| 子洲县| 虞城县| 安多县| 青铜峡市| 五莲县| 鹤庆县| 南皮县| 定兴县| 义乌市| 长乐市| 南靖县| 衢州市| 庆元县| 栾城县| 油尖旺区| 临夏县| 马龙县| 鄱阳县| 静海县| 项城市| 威宁| 澄迈县| 南昌县| 平安县| 龙海市| 玉树县| 舒城县| 察隅县| 固阳县| 桃园市| 扎兰屯市| 砀山县| 加查县| 华宁县| 米林县| 台中市| 德昌县|