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

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

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

    Kela's Blog

                前面的路很坎坷,但畢竟是條路.也許走過這一段就會發現,走過去就是夢想中的地方.因此堅持成為此刻唯一能做且必須去做的事情.
    posts - 9, comments - 27, trackbacks - 0, articles - 15

    kela的筆記 應用程序框架 ---- spring(7)

    Posted on 2006-08-29 16:35 Kela 閱讀(174) 評論(0)  編輯  收藏 所屬分類: 我的筆記(Spring)

    摘要:Spring AOP ,從代理機制看AOP,動態代理的范例

    ?

    JDK1.3之后加入了可協助開發動態代理功能的API,你不必為特定對象與方法編寫特定的代理對象,使用動態代理,可以使用一個處理者(Handler)服務于各個對象。

    ?

    ???? LogHandler.java

    ?

    package com.kela.spring.aop;

    ?

    import java.lang.reflect.InvocationHandler;

    import java.lang.reflect.Method;

    import java.lang.reflect.Proxy;

    ?

    import org.apache.log4j.Logger;

    ?

    public class LogHandler implements InvocationHandler {

    ?

    ??? private Logger log = Logger.getLogger(this.getClass().getName());

    ???

    ??? private Object delegate;

    ???

    ??? public Object bind(Object delegate) {

    ??????? this.delegate = delegate;

    ??????? return Proxy.newProxyInstance(delegate.getClass().getClassLoader(), delegate.getClass().getInterfaces(), this);

    ??? }

    ??? public Object invoke(Object arg0, Method method, Object[] args)

    ??????????? throws Throwable {

    ??????? Object result = null;

    ???????

    ??????? try {

    ??????????? log.info("hello 方法開始執行... ...");

    ???????????

    ??????????? result = method.invoke(delegate, args);

    ???????????

    ??????????? log.info("hello 方法執行完畢");

    ??????? } catch (Exception e) {

    ??????????? System.out.println("[ERROR]" + e.getMessage());

    ??????? }

    ??????? return result;

    ??? }

    ?

    }

    ???? IHell.java

    ?

    package com.kela.spring.aop;

    ?

    public interface IHello {

    ??? public void hello(String name);

    }

    ???? HelloSpeaker.java

    ?

    package com.kela.spring.aop;

    ?

    public class HelloSpeaker implements IHello {

    ?

    ??? public void hello(String name) {

    ??????? System.out.println(" 你好," + name);

    ??? }

    }

    ???? ProxyDemo.java

    ?

    package com.kela.spring.aop;

    ?

    public class ProxyDemo {

    ???

    ??? public void method_2() {

    ??????? LogHandler logHandler = new LogHandler();

    ???????

    ??????? IHello helloProxy = (IHello)logHandler.bind(new HelloSpeaker());

    ???????

    ??????? helloProxy.hello("kela");

    ??? }

    ?

    ??? public static void main(String[] args) {

    ??????? ProxyDemo proxyDemo = new ProxyDemo();

    ???????

    ??????? proxyDemo.method_2();

    ??? }

    }

    ???? 學習小結

    ?

    使用代理對象將記錄等于業務邏輯無關的動作或任務提取出來,設計為一個服務對象,如LogHandler和上一小節中的HelloProxy,這樣的對象稱之為切面(Aspect)。

    分享到:
    主站蜘蛛池模板: 亚洲午夜精品久久久久久人妖| 国产大片51精品免费观看| 中文字幕不卡亚洲| 一级做a爱片特黄在线观看免费看| 日本高清免费不卡视频| 亚洲精品国产首次亮相| 日本无吗免费一二区| 久久精品国产亚洲av瑜伽| 国产小视频免费观看| 国产精品亚洲一区二区三区久久| 国产精品冒白浆免费视频| 深夜A级毛片视频免费| 狠狠亚洲狠狠欧洲2019| 国产一精品一av一免费爽爽| 亚洲av网址在线观看| 亚洲日本在线免费观看| 亚洲天堂男人影院| 午夜一级免费视频| 理论片在线观看免费| 国产亚洲综合一区柠檬导航| 久久免费区一区二区三波多野| 亚洲精品中文字幕无码AV| 女人18毛片免费观看| 成年大片免费视频播放一级| 亚洲成AV人片在| 影音先锋在线免费观看| yellow视频免费看| 久久久无码精品亚洲日韩蜜臀浪潮 | 亚洲熟妇av一区二区三区漫画| 大地资源在线资源免费观看| 亚洲白色白色永久观看| 最近最新中文字幕完整版免费高清| 337P日本欧洲亚洲大胆艺术图| 国产亚洲精品无码拍拍拍色欲 | 亚洲午夜福利在线视频| 亚洲天堂免费在线视频| 曰批全过程免费视频网址| 婷婷亚洲综合五月天小说在线| 国产精品亚洲精品日韩已满| 成年女人18级毛片毛片免费观看| 无码AV动漫精品一区二区免费|