<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 閱讀(178) 評論(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)。

    分享到:
    主站蜘蛛池模板: 亚洲AV色吊丝无码| 免费成人av电影| 亚洲天堂一区二区| 久久性生大片免费观看性| 国产精品免费视频网站| 日韩免费在线中文字幕| 永久免费观看的毛片的网站| 97久久国产亚洲精品超碰热| 日韩精品成人无码专区免费| 日本亚洲免费无线码 | 啦啦啦手机完整免费高清观看| 亚洲高清成人一区二区三区 | 成人性生交视频免费观看| 亚洲香蕉久久一区二区三区四区| 亚洲人成在线免费观看| www.亚洲日本| 国产成人免费全部网站| 羞羞视频免费网站日本| 亚洲人成在线播放网站| 久久国产免费一区| 亚洲国产美女在线观看| 青青青青青青久久久免费观看| 国产成人亚洲综合在线| 国产性爱在线观看亚洲黄色一级片| 9久热精品免费观看视频| 婷婷亚洲久悠悠色悠在线播放| 亚欧免费视频一区二区三区| 亚洲综合精品伊人久久| 亚洲av成人一区二区三区在线观看| 精品一区二区三区免费观看| 亚洲gv白嫩小受在线观看| 黄页网站免费观看| 全部一级一级毛片免费看| 亚洲91av视频| 四虎影院在线免费播放| 国产精品永久免费视频| 亚洲国产午夜电影在线入口| 亚洲A∨精品一区二区三区| 人妻无码一区二区三区免费| 亚洲色无码专区一区| 亚洲精品亚洲人成在线观看|