麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

使用 AOP 來維護遺留 Java 應(yīng)用程序

2019-11-18 13:46:10
字體:
供稿:網(wǎng)友

  處理復(fù)雜和不熟悉 java 代碼的技術(shù)
級別:中級


Abhijit Belapurkar([email protected]
高級技術(shù)架構(gòu)師,Infosys Technologies Limited
2004 年 3 月

假如您曾經(jīng)接管并且必須維護某個基于 Java 的應(yīng)用程序,那么本文就是為您預(yù)備的。作者 Abhijit Belapurkar 將向您展示如何使用面向方面編程(aspect-oriented PRogramming,AOP)來對即使最不透明的遺留應(yīng)用程序獲得前所未有的見解。
軟件系統(tǒng)通常從一組有限的得到良好理解的需求開始。然而,隨著大多數(shù)成功系統(tǒng)的演進,它們承擔(dān)起越來越多的需求,體現(xiàn)在無數(shù)的功能和非功能性方面。在一個企業(yè)環(huán)境中,您最終很輕易向這個混亂的模塊組合添加許多第三方庫和框架,它們?nèi)急舜私换?,并在系統(tǒng)日常工作的表面之下相互配合。實際上,用不了多少年,最初具有很簡單、可治理的需求集的系統(tǒng)就會變成龐然大物:難于控制和笨拙的代碼。

于是步入這種環(huán)境的 Java 開發(fā)人員就有了一個日常維護和改進的新任務(wù)。假如您就是這個開發(fā)人員,那么您的第一個任務(wù)就是深刻理解該系統(tǒng)的結(jié)構(gòu)。理解結(jié)構(gòu)將是增強系統(tǒng)和診斷不可避免會發(fā)生的問題的要害。當(dāng)然,第一次探究任何未知的系統(tǒng)都是說起來輕易做起來難。在某些情況下,您能夠咨詢原先的開發(fā)人員,而在其他情況下卻不能。但是即使能夠找到原先的開發(fā)團隊,有些系統(tǒng)也會因為太過龐大,而無法在沒有機械幫助下熟悉和理解它。

雖然有許多可用的工具能夠幫助您理解復(fù)雜的程序(請參閱 參考資料),但是大多數(shù)工具都很昂貴、學(xué)習(xí)起來很耗時間,并且功能范圍有限(也就是說,假如該工具無法滿足需要,您將求助無門)。在本文中,我將建議一種替代的方法。面向方面編程是成熟的編程范型,它可以應(yīng)用于廣泛的編程場景,包括遺留應(yīng)用程序的理解和維護。

請注重,本文假設(shè)您大致熟悉 ASPectJ 之下的 AOP,非凡是 ASPectJ 的靜態(tài)和動態(tài)橫切技術(shù)。雖然我將在下一節(jié)提供關(guān)于 AOP 橫切的簡要概述,但是您應(yīng)該參考 參考資料,獲取更多信息。

總體概述
基于 Java 的 AOP 使用了靈活而豐富的表達語言,您可以使用它以近乎無限種方式來分解復(fù)雜的應(yīng)用程序。基于 Java 的 AOP 的語法類似于 Java 語言,您應(yīng)該很輕易就會把握它。一旦把握,AOP 就是一種具有許多應(yīng)用的編程技術(shù)。除了理解遺留系統(tǒng)內(nèi)部細節(jié)外,您還可以使用 AOP 來非強制性地重構(gòu)和增強這樣的系統(tǒng)。雖然本文將完全使用 ASPectJ,不過這里討論的大多數(shù)技術(shù)都可移植到其他流行的基于 Java 的 AOP 實現(xiàn),比如 ASPectWerkz 和 JBossAOP(請參閱 參考資料)。

關(guān)于橫切
任何應(yīng)用程序都由多個功能性和系統(tǒng)性關(guān)注點(concern)組成。功能性 關(guān)注點與應(yīng)用程序的日常使用相關(guān),而 系統(tǒng)性 關(guān)注點則與系統(tǒng)的整體健康和維護相關(guān)。例如,一個銀行應(yīng)用程序的功能性關(guān)注點包括賬戶維護和答應(yīng)借/貸操作,它的系統(tǒng)性關(guān)注點包括安全、事務(wù)、性能和審計日志記錄。即使使用最好的編程方法學(xué)來開發(fā)應(yīng)用程序,您最終也會發(fā)現(xiàn)它的功能性和系統(tǒng)性關(guān)注點會以跨越多個應(yīng)用程序模塊的形式相互混雜在一起。

橫切 是一種 AOP 技術(shù),用于確保獨立的關(guān)注點保持模塊化,同時仍然足夠靈活地在整個應(yīng)用程序中的不同點應(yīng)用。橫切包括靜態(tài)和動態(tài)兩種類別。動態(tài)橫切 體現(xiàn)為通過在感愛好的特定點織入(weave in)新的行為來改變對象的執(zhí)行行為。靜態(tài)橫切 答應(yīng)我們通過注入(inject in)附加的方法和/或?qū)傩詠碇苯痈淖儗ο蟮慕Y(jié)構(gòu)。

靜態(tài)橫切的語法與動態(tài)橫切很不相同。以下術(shù)語適用于動態(tài)橫切:


連接點(join point)是 Java 程序中的某個特定執(zhí)行點,比如某個類中的一個方法。


切入點(pointcut)是特定于語言的結(jié)構(gòu),它表示或捕捉某個特定的連接點。


通知(advice)是在到達某個特定的切入點時要執(zhí)行的一段代碼(通常是一個橫切功能)。


方面(ASPect)是定義切入點和通知以及它們之間的映射的一個結(jié)構(gòu)。方面由 AOP 編譯器用來在現(xiàn)有對象中的特定執(zhí)行點織入附加功能。

本文中的所有代碼演示都將利用動態(tài)橫切。請參閱 參考資料,獲得關(guān)于靜態(tài)橫切的更多信息。

ASPectJ 之下的 AOP
為了學(xué)習(xí)本文中的例子,您應(yīng)該熟悉以下特定于 ASPectJ 之下的 AOP 的特性。


ASPectJ 提供一個名為 ajc 的編譯器/字節(jié)代碼織入器,它編譯 ASPectJ 和 Java 語言文件。ajc 根據(jù)需要將方面交織在一起,以產(chǎn)生與任何 Java 虛擬機(1.1 或更高版本)相容的 .class 文件。


ASPectJ 支持如下這樣的方面,即這些方面規(guī)定某個特定的連接點應(yīng)該永遠不會到達。假如 ajc 進程判定出情況不是這樣,它將發(fā)出一個編譯時警告或錯誤(具體取決于該方面)。

應(yīng)用程序和系統(tǒng)分析
在下面幾節(jié)中,您將學(xué)習(xí)兩種使用 AOP 的不同的應(yīng)用程序和系統(tǒng)分析機制。第一種機制我稱之為 靜態(tài)分析,它要求您做以下事情:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 91精品国产综合久久久动漫日韩 | 色污视频 | wankzhd| 蜜桃视频在线免费播放 | 精品欧美一区二区精品久久 | 中国av免费观看 | 亚洲一级片免费观看 | 国产成人精品免高潮在线观看 | 国产精品视频成人 | fc2成人免费人成在线观看播放 | 午夜a狂野欧美一区二区 | 一级一级一级毛片 | 鲁丝片一区二区三区免费入口 | 久久99国产精品久久 | 精品国产乱码久久久久久久久 | 国产成人自拍视频在线观看 | 成人毛片100部免费观看 | 黄色片在线免费播放 | 在线视频a | 99日韩精品视频 | 亚洲第一综合 | 免费视频一区 | 亚洲免费视频大全 | 护士hd欧美free性xxxx | 又黄又爽免费无遮挡在线观看 | 国产做爰全免费的视频黑人 | 亚洲免费看片网站 | 欧美a在线播放 | 全黄毛片| va视频| 国产精品久久久久久久久久三级 | 欧美成人精品一区 | 国产啊v在线观看 | 毛毛片在线看 | 国产精品久久久久久久久久iiiii | 成人福利软件 | 亚洲精品在线观看免费 | 免费a级黄色片 | 男女无遮挡羞羞视频 | 午夜偷拍视频 | 国产精品观看在线亚洲人成网 |