佳麗斯 加厚雙人/單人秋冬被子暖冬 羊毛被芯羊毛柔絲被特價包郵 憂憂魚冬外穿打底褲女秋冬厚長褲女褲加絨加厚高腰彈力鉛筆褲靴褲 韓國代購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秋冬新款直筒褲女顯瘦長褲加絨黑色休閑褲修身西褲女褲
          主站蜘蛛池模板: 望谟县| 通州市| 兴海县| 安徽省| 海丰县| 萨迦县| 彰武县| 东至县| 昭平县| 大兴区| 定兴县| 达日县| 班玛县| 大竹县| 宜章县| 新乡县| 霍林郭勒市| 铜梁县| 庐江县| 化德县| 德阳市| 丹阳市| 垣曲县| 南阳市| 多伦县| 岳西县| 扎兰屯市| 双桥区| 宁城县| 定陶县| 凯里市| 贺兰县| 嘉祥县| 镇康县| 军事| 盐池县| 宜川县| 香格里拉县| 牡丹江市| 大余县| 长子县|