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

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

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

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

    AOP及其Java實現機制

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

    領測軟件測試網

    3AOP實現機制

    根據來自于AOSD(Aspect-OrientedSoftwareDevelopment,http://aosd.net)的統計,目前與AOP相關的項目已達近百種,而基于Java的AOP實現機制也有二十多種,以下所列舉的是商業上得到成熟應用的幾種基于Java的AOP的實現機制。

    3.1AspectJ

    AspectJ是目前最完善的AOP語言,由AOP的首倡者GregorKiczales領導的一個小組提出并得到發展。AspectJ是對Java編程語言的擴展,通過增加了一些新的構造塊支持對橫切關注點的模塊化封裝,通過對源代碼級別的代碼混合實現織入,是一種典型的使用靜態織入的AOP實現機制。AspectJ提供了兩種橫切實現機制,一種稱為動態橫切(DynamicCrosscutting),另一種稱為靜態橫切(StaticCrosscutting)。
    動態橫切是指在程序執行的某一個明確的點上運行額外的,預先定義好的實現,是一種靜態實現機制,并非是動態的。為了實現動態橫切,AspectJ中引入了四個新的概念:連接點(JoinPoint),切入點(Pointcut),參考(Advice)和方面(Aspect)。連接點是明確定義的程序執行過程中的一個點,切入點則是指一組相關的連接點,參考定義了在連接點執行的額外實現,方面則是指對橫切關注點的模塊化封裝實現的單元,類似于AOP中的類,由切入點,參考與普通的Java成員聲明組成。如前所述,連接點是程序執行中明確定義的點,比如,類接受到方法調用時,方法調用時,屬性訪問時都是連接點的例子,在連接點處可以執行預定義的額外實現。而要指明在哪些連接點上執行,則需要定義切入點,切入點可以在程序運行時匹配特定的連接點,AspectJ中預定義了一系列標準切入點,包括方法與構造器的調用,接受調用,執行,域的get,set訪問,異常處理,實例類型匹配,處于類或方法體中,控制流中,調用者調用方法,類型的初始化與靜態初始化,通過這些預定義切入點的組合可以實現自定義的、復雜的切入點。在編譯時,方面中的參考將被轉化為標準的方法,類代碼中匹配切入點的連接點將被轉化為一個靜態的標記點,然后,這些靜態的點將被對參考所轉化成的方法的調用所取代,由此完成兩種代碼的織入,最后對織入完成的代碼編譯為字節碼,即完成了整個編譯過程。目前,AspectJ即支持編譯前的預處理方式實現代碼的織入,也支持編譯后的字節碼操作。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品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>