• <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次 | 進入領測軟件測試網論壇討論

    領測軟件測試網

    9f$kKz)}Vf e

    5B;N.~3Q'}3A0fSpringFramework是一個采用了反轉控制(InversionofControl,IoC)策略的基于J2EE的輕量級應用框架。SpringFramework的核心是IoC容器,對于其它應用,如數據庫訪問,日志等,SpringFramework多使用現有的、成熟的框架。SpringFramework采用了模塊化的方式,各模塊可以共同使用,也可以單獨使用其中的一個模塊,SpringFramework的一個模塊提供了對動態AOP的支持,SpringFramework中提供的聲明式事務管理就是基于動態AOP的。

    3~#b}g2XW0ntK

    Ovz1tO0q3cSpringFramework中AOP的實現基于動態代理(DynamicProxy),動態代理源于代理模式,即通過接口實現對業務對象的訪問,但動態代理無需為每一個需代理的業務對象靜態的生成代理對象,只需提供需要代理的接口與代理實現,就可以在運行時動態的生成代理對象,代理對上述接口的訪問,同樣的機制也使用于對類的代理,使用類似于修飾者的模式,通過子類化實現。SpringFramework默認使用JDK提供的動態代理機制,此時,業務對象通過接口編程,若需要代理對類的訪問,則需要使用CGLIB,這是一個開源的動態代理實現。軟件測試技術門戶7fXk-?,~L6PF;{gk
    SpringFramework的AOP實現不同于AspectJ與AspectWerkz,它不是完全的AOP實現,而是設計用于在應用服務器環境下實現AOP,與SpringFramework的IoC容器配合使用。SpringFramework中參考,切入點與方面均由普通Java對象實現,其中連接點模型與AspectJ相同,只是遠不如AspectJ豐富,目前只提供對方法調用的攔截。有4種類型的參考,分別為方法調用時,之前,返回時與拋出異常時,通過實現SpringFramework的參考接口可以自定義參考類型。在SpringFramework中,方面稱為Advisor,是一個包含參考與切入點的Java類。像其它由IoC容器管理的組件一樣,參考,切入點與方面也由IoC容器管理,由XML配置文件定義。配置的內容包括業務對象的接口與實現,自定義的或由SpringFramework提供的切入點與參考類,或使用Adviser類取代單獨的切入點與參考類。在運行時,通過IoC容器進行名稱查找,就可以由容器使用代理機制自動產生代理對象,并在符合切入點定義的連接點處執行參考。SpringFramework除自身實現的AOP框架外,還在尋求與其它AOP實現機制的整合,目前已經實現了與AspectJ的整合,以利用AspectJ豐富的切入點語法,并利用AspectJ的方面實現。

    U)v q/p+N+_'@T]^ EX 軟件測試技術門戶 mu|x/OUc,o{

    3.4JBoss軟件測試技術門戶k9s!q2?\ a

    0@:t3q$L ]JBoss是一個開源的符合J2EE規范的應用服務器,作為J2EE規范的補充,Jboss中引入了AOP框架,為普通Java類提供了J2EE服務,而無需遵循EJB規范。Jboss通過類載入時,使用Javassist對字節碼操作實現動態AOP框架,Javassist是一個開源的編輯字節碼的類庫。

    o Kp3QW 軟件測試技術門戶JaK 老湿亚洲永久精品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>