• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 測試技術
    • 博客
    • 視頻
    • 開源
    • 論壇
    • 沙龍
    • 下載
    • 雜志
    • 招聘

    您的位置:您的位置:軟件測試技術門戶 >> 軟件測試技術 >> 開發語言 >> Java >> 查看資訊

    字號: | 推薦給好友 上一篇 | 下一篇

    AOP及其Java實現機制

    發布: 2008-5-28 10:20 | 作者: 不詳 | 來源: blog.csdn.net | 查看: 60次 | 進入領測軟件測試網論壇討論

    領測軟件測試網

    [2g'W nO `lt.M*S 軟件測試技術門戶erP-PJRy

    靜態橫切是指對已存在的類型定義引入新的方法,屬性等,與動態橫切不同,靜態橫切不改變類型的動態行為,而是改變其靜態結構,也即導入(Introduction)。通過在方面代碼中聲明方法,屬性,需要繼承的超類,接口等,在代碼織入時,可以改變應用此方面的類的定義。軟件測試技術門戶? LU.J4W%jn b

    $~$q _'h,iPABT3.2AspectWerkz

    ,@UI5{q|4oebMUl

    \$o%m?}xG6YEHXAspectWerkz是一個動態的AOP框架,利用對字節碼的修改實現方面的織入,并使用Java虛擬機的動態替換字節碼的能力實現動態AOP的要求。AspectWerkz沒有擴展Java語言,方面、參考、切入點等均使用標準的Java構造塊,即類以及方法來實現,并使用XML文件定義這些構造塊,此外AspectWerkz還支持使用JavaDoc標記實現的運行期屬性定義。AspectWerkz采用了與AspectJ相似的連接點模型,只是支持的連接點種類少于AspectJ,參考的類型一致。軟件測試技術門戶_Ikf'acq

    軟件測試技術門戶~.q0s9o@

    AspectWerkz通過引入一個間接層,方面容器(AspectContainer)以及對字節碼的轉化,即代碼織入實現動態AOP的要求,方面容器管理部署好的類、方面代碼,并根據XML文件或JavaDoc注釋中定義的方面,參考,切入點等得到連接點處相關的方面信息,并在程序的執行中控制執行流程,在匹配的連接點處執行適當的參考。
    ~mw%{u(Lz \dAspectWerkz通過類載入層次的適當位置攔截類載入從而實現字節碼的修飾。AspectWerkz提供了兩種織入模式實現AOP:靜態織入以及動態織入。靜態織入只在類載入時對字節碼作一次性的轉化,通過將類的方法實現移入AspectWerkz命名的方法中,將原方法中的代碼改寫,由方面容器調用適當的參考,并調用前述AspectWerkz添加的方法從而完成代碼的織入。導入則由混合類型(Mixin)實現,用于為類增加新的方法,混合類型是一種使用接口與實現類的方式模擬多重繼承的機制。AspectWerkz通過修改字節碼使被導入的類實現混合類型的接口,并在接口定義的方法中,將控制交給容器管理器,由它來完成對實現的調用。靜態織入可以在運行時動態的為切入點增加,刪除參考,可以引入新的參考,但是無法定義新的切入點,這需要動態織入。動態織入由兩階段織入完成,分別為類載入階段與激活階段。首先,在類載入時,按照靜態織入的方法,為需要實現動態織入的類的每個方法添加一個相應的空的方法,匹配連接點的方法除外。然后,在激活階段,原方法體中的代碼將被交換到類載入時新產生的方法中,原方法將實現靜態織入時相同的處理,從而方面容器控制流程。前述代碼交換是由熱交換(HotSwap)實現的,這是JVM提供的API。通過方面容器與織入模型,AspectWerkz提供了動態AOP的實現。

    B'KA 老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>