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

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

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

    posts - 22, comments - 17, trackbacks - 0, articles - 15
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    初識AOP

    Posted on 2006-12-02 15:52 碼農cz 閱讀(157) 評論(0)  編輯  收藏 所屬分類: Spring what I know

    AOP是被看做Spring框架中的一個重頭戲。所以介紹一下。

    學習Spring AOP之前,先來了解一下AOP。
    AOP應用到項目中的好處,能夠將與業務邏輯不相關的代碼(如:日志、權限等)分離出來,減小相關業務類負擔,并能讓一些通用需求(如:事務)得到更廣泛的復用。
    AOP的實現是利用了java核心的代理機制,分靜態代理與動態代理。
    靜態代理要求代理對象與被代理對象都實現同一個接口

    ?1??//接口:
    ?2?public?interface?IBusiness{
    ?3?????????public?void?doBusiness();
    ?4?}
    ?5?//實現:
    ?6?public?class?BusinessImpl?implements?IBusiness{
    ?7?????????public?void?doBusiness(){
    ?8?????????????????System.out.println("業務主體部分");
    ?9?????????}
    10?}
    11?//執行器:
    12?public?class?BusinessHandler?implements?InvocationHandler{
    13?????????private?BusinessImpl?bi=null;
    14?????????public?BusinessHandler(BusinessImpl?bi){
    15?????????????????this.bi=bi;
    16?????????}
    17?????????public?Object?invoke(Object?proxy,Method?method,Object[]?args)?throws?Throwable{
    18?????????????????System.out.println("事務、日志、權限等操作");
    19?????????????????method.invoke(bi,args);
    20?????????????????System.out.println("事務、日志、權限等操作");
    21?????????}
    22?????????}
    23?}
    24?//應用:
    25?public?class?AOPAppDemo{
    26?????????public?static?void?main(String[]?args){
    27?????????????????BusinessImple?bi=new?BusinessImple();
    28?????????????????BusinessHandler?bh=new?BusinessHandler(bi);
    29?????????????????IBusiness?proxy=(IBusiness)Proxy.newProxyInstance(bi.getClass().getClassLoader(),bi.getClass().getInterfaces(),bh);
    30???????????????????proxy.doBusiness();
    31?????????}
    32?}

    上述代碼就是通過靜態代理實現了AOP,BusinessProxy代理了BusinessImpl的doBusiness方法。但是靜態代理一般不能滿足我們項目開發的需求,如果業務需求很多它得為每一個業務方法一一做代理,動態代理正好解決了這一缺點,接下來我們來說說動態代理吧。
    動態代理,需實現一個InvocationHandler的接口,重寫invoke(Object proxy,Method method,Object[] args)方法,代理對象實例由Proxy.newProxyInstance(ClassLoader loader,Class interfaces,InvocationHandler h)方法生成,當代理對象的方法被執行時,通知執行器(InvocationHandler)執行invoke(Object proxy,Method method,Object[] args)方法,invoke方法內調用了method.invoke(Object obj,Object... args)方法,該方法對帶有指定參數的指定對象調用由此 Method 對象表示的基礎方法,應該這時才真正代理執行了業務邏輯(這里我是這樣理解的,不知對不對)。
    接下來用代碼說明上述動態代理原理,與靜態代理相比接口與實現保持不變

    ?1?//接口:
    ?2?public?interface ?IBusiness{
    ?3?????????public?void
    ?doBusiness();
    ?4?
    }
    ?5?//實現:

    ?6?public?class?BusinessImpl?implements ?IBusiness{
    ?7?????????public?void
    ?doBusiness(){
    ?8?????????????????System.out.println("業務主體部分"
    );
    ?9?
    ????????}
    10?
    }
    11?//代理:

    12?public?class?BusinessProxy?implements ?IBusiness{
    13?????????private
    ?BusinessImple?bi;
    14?????????public
    ?BusinessProxy(BusinessImple?bi){
    15?????????????????this.bi=
    bi;
    16?
    ????????}
    17?????????public?void
    ?doBusiness(){
    18?????????????????System.out.println("事務、日志、權限等操作"
    );
    19?
    ????????????????bi.doBusiness();
    20?????????????????System.out.println("事務、日志、權限等操作"
    );
    21?
    ????????}
    22?
    }
    23?//應用:

    24?public?class ?AOPAppDemo{
    25?????????public?static?void
    ?main(String[]?args){
    26?????????????????BusinessImpl?bi=new
    ?BusinessImple();
    27?????????????????BusinessProxy?proxy=new
    ?BusinessProxy(bi);
    28?
    ????????????????proxy.doBusiness();
    29?
    ????????}
    30?
    }
    31?

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    相關文章:
     
    主站蜘蛛池模板: 久久国产免费福利永久| 波多野结衣免费视频观看| 亚洲最大激情中文字幕| 美美女高清毛片视频黄的一免费| 成人免费视频一区| 亚洲欧美国产精品专区久久| 天天摸天天操免费播放小视频| 日韩中文无码有码免费视频 | 亚洲免费人成在线视频观看| 深夜免费在线视频| 亚洲国产天堂久久久久久| 在线观看亚洲视频| 国产L精品国产亚洲区久久| 亚洲国产日韩在线成人蜜芽| 国产精品爱啪在线线免费观看| 亚洲国产精品一区二区久| 最近中文字幕mv手机免费高清| 亚洲偷自拍另类图片二区| 免费看国产一级片| jizz免费一区二区三区| 久久精品国产亚洲| 七次郎成人免费线路视频| 亚洲午夜无码久久久久| 日韩精品无码一区二区三区免费| 亚洲A∨精品一区二区三区| 曰韩无码AV片免费播放不卡 | 亚洲av无码不卡久久| 伊人免费在线观看| 久久亚洲中文字幕精品有坂深雪| 嘿嘿嘿视频免费网站在线观看| 亚洲色www永久网站| 亚洲成a人片在线播放| 污视频在线免费观看| 一本色道久久88—综合亚洲精品| www亚洲一级视频com| 84pao强力永久免费高清| 亚洲精品第一国产综合亚AV| 动漫黄网站免费永久在线观看| 日韩成人精品日本亚洲| 精品亚洲综合在线第一区| 18国产精品白浆在线观看免费|