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

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

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

    如鵬網(wǎng) 大學(xué)生計算機學(xué)習(xí)社區(qū)

    CowNew開源團(tuán)隊

    http://www.cownew.com 郵件請聯(lián)系 about521 at 163.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks

    下面是 AOP 的一些基本概念

    aspect (方面):實現(xiàn)了 cross-cutting 功能,是針對方面的模塊,是為題的不同關(guān)注點,我們可以將這些方面通過某種方式加入到核心關(guān)注點中。

    jointpoint (連接點):連接點是方面插入應(yīng)用程序的地方,該點能被方法調(diào)用。

    advice (通知): advice 是我們關(guān)注點功能的實現(xiàn),它通知程序新的行為。如在權(quán)限處理中, permission advice 包括權(quán)限控制的實現(xiàn)代碼。

    pointcut (切入點): pointcut 可以指定把哪些 advice 應(yīng)用到 jointpoint 上去、如何應(yīng)用上去以及應(yīng)用的位置。

    AOP 包括三個開發(fā)步驟:

    關(guān)注點分解:分解需求提取出橫切關(guān)注點和一般關(guān)注點。把核心模塊級關(guān)注點和系統(tǒng)級的橫切關(guān)注點分離開來。就前面所提到的網(wǎng)上購物系統(tǒng)來說,可以分解出四個關(guān)注點:核心的訂單處理、權(quán)限、日志和事務(wù)。

    關(guān)注點實現(xiàn):各自獨立的實現(xiàn)這些關(guān)注點。

    關(guān)注點的重新組合:在這一步里,通過創(chuàng)建一個模塊單元來指定關(guān)注點重組的規(guī)則。重組過程被稱為織入( Weaving )。以前邊的網(wǎng)上購物系統(tǒng)來說,可以通過某種方式指定每個操作結(jié)束后需要記錄日志、操作開始前要驗證是否有權(quán)限、操作失敗要事務(wù)回滾。

    ?

    ?

    下面是 AspectJ 實現(xiàn)日志記錄的一個例子:

    public aspect AutoLog

    {?

    pointcut publicMethods() :

    execution(public * org.apache.cactus..*(..));

    pointcut logObjectCalls() :

    execution(* Logger.*(..));

    pointcut loggableCalls() :

    publicMethods() && ! logObjectCalls();

    before() : loggableCalls()

    {

    Logger.entry(thisJoinPoint.getSignature().toString());

    }

    after() : loggableCalls()

    {

    Logger.exit(thisJoinPoint.getSignature().toString());

    }

    }

    可以看到,這里邊有很多 Java 中沒有的關(guān)鍵字,比如 aspect pointcut 等。這些關(guān)鍵字都是 AspectJ 提供的,使用這些擴展我們可以用 AspectJ Java 類增加字段及方法,甚至使 Java 支持多繼承。

    ?

    ?

    Spring 沒有自己進(jìn)行 AOP 技術(shù)的實現(xiàn) , 它的主要實現(xiàn)技術(shù)來自于 AOP 聯(lián)盟( AOPAlliance )。

    Spring AOP 中的術(shù)語不像 AspectJ 那樣多,因而也更容易理解和學(xué)習(xí)。只要理解三個概念就可以, advice pointcut advisor

    advice 是要向別的模塊內(nèi)部不同的地方注入的代碼

    pointcut 定義了需要注入 advice 的位置,通常是某個特定的類的一個 public 方法

    advisor pointcut advice 的裝配器,是將 advice 注入主程序中預(yù)定義位置的代碼

    posted on 2007-02-20 00:50 CowNew開源團(tuán)隊 閱讀(207) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 成人性生交大片免费看好| 亚洲视频手机在线| 亚洲精品在线视频| 国产小视频在线观看免费| 妞干网手机免费视频| 日本XXX黄区免费看| 99无码人妻一区二区三区免费| 99久久久国产精品免费牛牛 | 亚洲热线99精品视频| 亚洲午夜精品第一区二区8050| 亚洲A∨午夜成人片精品网站| 免费一级成人毛片| gogo全球高清大胆亚洲| 亚洲成AⅤ人影院在线观看| 亚洲AV无码乱码精品国产| 亚洲精品国产自在久久| 亚洲一区无码精品色| 亚洲精品无码永久中文字幕| 国产亚洲A∨片在线观看| 亚洲国产综合精品中文第一区| 亚洲永久永久永久永久永久精品| 伊人久久综在合线亚洲2019| 亚洲综合综合在线| 色婷五月综激情亚洲综合| 亚洲精品日韩一区二区小说| 羞羞网站免费观看| 精品国产呦系列在线观看免费| 爱丫爱丫影院在线观看免费| 99在线视频免费| 歪歪漫画在线观看官网免费阅读| 精品国产精品久久一区免费式| 亚洲国产成人久久一区WWW| 亚洲午夜久久久久久噜噜噜| 亚洲精品国产肉丝袜久久| 国产成人精品亚洲日本在线 | 亚洲av综合色区| 亚洲最大中文字幕| 亚洲a∨无码精品色午夜| 国产成人无码精品久久久免费| 久久精品国产免费| 亚洲免费综合色在线视频|