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

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

          用心愛你,努力工作。

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



          接下來介紹動(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)建測試類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)行測試類,結(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) 評論(0)  編輯  收藏 所屬分類: Spring
          森露2013新款豹紋打底衫 高領(lǐng) 女 長袖 修身長袖t恤女 加絨加厚冬 2013春秋新款女裝 潮修身大碼長袖小西裝外套女 韓版中長款小西裝 憂憂魚2013秋冬新款直筒褲女顯瘦長褲加絨黑色休閑褲修身西褲女褲
          主站蜘蛛池模板: 响水县| 凌源市| 师宗县| 仙游县| 寻甸| 越西县| 读书| 陈巴尔虎旗| 隆林| 昌邑市| 南江县| 阿坝县| 达拉特旗| 开封市| 永安市| 池州市| 五河县| 河曲县| 湾仔区| 丰原市| 三原县| 封丘县| 乡宁县| 精河县| 浦县| 凌源市| 墨脱县| 桐乡市| 威远县| 靖宇县| 个旧市| 大安市| 永仁县| 介休市| 高要市| 科尔| 宜兰市| 承德县| 东阿县| 怀化市| 四会市|