Spring(4)--對AOP的理解

什麼是AOP?
AOP,也就是面向切面編程。傳統的學Java就是面向對象編程(OOP),而OOP是從靜態解讀考慮程序結構,但AOP是從動態角度考慮程序運行過程。也可以說AOP是OOP的補充和完善。OOP引入了封裝、繼承和多態性等概念來建立一層對象層次架構,用以模擬公共的一個集合。當我們需要爲分散的對象引入公共行爲的時候,則OOP顯得無能爲力了。也就是說,OOP允許你定義從上到下的關係,但並不適合從左到右的關係,例如日誌功能。日誌代碼往往水平的散佈在所有對象層次中,而與它所散佈到的對象的核心功能毫無關係。 對於其它類型的代碼,如安全性、異常處理和透明的持續性也是如此。這種散佈在各處的無關的代碼就被稱爲橫切代碼,在OOP設計中,他導致了大量代碼的重複,而不利於各個模塊的重用。

而AOP技術則恰恰相反,它利用一種稱爲“橫切”的技術,剖解開封裝的對象的內部,並將那些影響了多個類的公共行爲封裝到一個可重用模塊,並將其名爲“Aspect”。所謂的切面,簡單的說就是將那些與業務無關,卻Wie業務模塊鎖共同調用的邏輯或責任封裝起來。便於減少系統的重複代碼,降低模塊間的耦合度等。
實現AOP的技術,主要分爲兩類:一是採用動態代理技術,利用截取信息的方式,對該信息進行裝飾,以取代原對象行爲的執行;二是採用靜態織入的方式,引入特定的語法創建切面,從而使得編譯器可以在編譯期間織入有關切面的代碼。

理解以下概念:
切面(Aspect):一個關注點的模塊化,這個關注點實現可能橫切多個對象。聲明式事務管理是J2EE應用中一個很好的很橫切關注點例子。
連接點(joinpoint):程序執行過程中明確的點,如方法的調用或特定的異常被拋出。
通知,也意味着增強處理(Advice):在特定的連接點上AOP框架執行的動作。Spring中定義了四個advice: BeforeAdvice, AfterAdvice, ThrowAdvice和DynamicIntroductionAdvice
切入點(Pointcut):指定一個通知將被引發的一系列連接點的集合。
引入:將方法或字段添加到被通知的類中。
目標對象:含連接點的對象。Pojo對象
AOP代理(AOP Proxy): AOP框架創建的對象,包含通知。
織入(Weaving):將增強處理添加到目標對象中,並創建一個被增強的對象(AOP代理)。

發佈了104 篇原創文章 · 獲贊 56 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章