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

          有時,退一步,能一口氣進幾步,只是這先退一步需要勇氣和自信。

          用心愛你,努力工作。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            70 隨筆 :: 1 文章 :: 33 評論 :: 0 Trackbacks
          接下來學習有關AOP,首先了解有關代理機制(Spring實現AOP的一種方式)。代理分為兩種:靜態代理與動態代理。
          通過一個例子來了解靜態代理。
           Lib包下載:
          http://www.ziddu.com/download/3555992/SpringAndaop.rar.html
          (1)一個簡單的接口IHello

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

          }
          (2)實現類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.*;
          /**
           * 靜態代理類,代理真正的實現類HelloSpeaker來執行
           *
           * */
          public class HelloProxy implements IHello{

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

           //構造函數
           public HelloProxy(IHello helloObject)
           {
            this.helloObject=helloObject;
           }
           //接口實現方法
           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)
           {
            //靜態代理模式
            HelloProxy proxy=new HelloProxy(new HelloSpeaker());
            proxy.hello("ducklyl");
           }

          }
          運行測試類,結果為:
          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...



          接下來介紹動態代理
          (1)創建動態代理類LogHandler

          package com.proxy;

          import java.lang.reflect.InvocationHandler;
          import java.lang.reflect.Method;
          import java.lang.reflect.Proxy;
          import java.util.logging.*;
          /**
           *
           * 動態代理類
           * **/

          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)創建測試類ProxyTest

          package com.proxy;

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

          }

          運行測試類,結果為:
          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 王生生 閱讀(973) 評論(0)  編輯  收藏 所屬分類: Spring
          森露2013新款豹紋打底衫 高領 女 長袖 修身長袖t恤女 加絨加厚冬 2013春秋新款女裝 潮修身大碼長袖小西裝外套女 韓版中長款小西裝 憂憂魚2013秋冬新款直筒褲女顯瘦長褲加絨黑色休閑褲修身西褲女褲
          主站蜘蛛池模板: 克拉玛依市| 松江区| 辉南县| 德庆县| 秦安县| 钟山县| 洛川县| 甘孜| 宁津县| 上犹县| 汝城县| 英德市| 泸溪县| 鹤岗市| 桦甸市| 延庆县| 岳阳市| 商水县| 上高县| 调兵山市| 略阳县| 招远市| 云南省| 万荣县| 湖北省| 盐城市| 渝中区| 龙井市| 江陵县| 小金县| 淳化县| 房山区| 富顺县| 甘洛县| 社会| 澳门| 惠水县| 前郭尔| 镇江市| 油尖旺区| 山东|