aop 面向切面程式設計

2021-07-03 15:53:39 字數 1345 閱讀 9641

起源

研究人員就對物件導向思想的侷限性進行了分析。他們研究出了一種新的程式設計思想,借助這一思想或許可以通過減少**重複模組從而幫助開發人員提高工作效率。隨著研究的逐漸深入,aop也逐漸發展成一套完整的程式設計思想,各種應用aop的技術也應運而生。

aop思想

定義乙個切面,在切面的縱向定義處理方法,處理完成之後,回到橫向業務流。aop 在spring框架中被作為核心組成部分之一。

aop和oop的關係

aop,可以說是oop的補充和完善。oop引入封裝、繼承和多型性等概念來建立一種物件層次結構,用以模擬公共行為的乙個集合。當我們需要為分散的物件引入公共行為的時候,oop則顯得無能為力。也就是說,oop允許你定義從上到下的關係,但並不適合定義從左到右的關係。例如日誌功能。日誌**往往水平地散布在所有物件層次中,而與它所散布到的物件的核心功能毫無關係。對於其他型別的**,如安全性、異常處理和透明的持續性也是如此。這種散布在各處的無關的**被稱為橫切(cross-cutting)**,在oop設計中,它導致了大量**的重複,而不利於各個模組的重用。

而aop技術則恰恰相反,它利用一種稱為「橫切」的技術,剖解開封裝的物件內部,並將那些影響了多個類的公共行為封裝到乙個可重用模組,並將其名為「aspect」,即方面。所謂「方面」,簡單地說,就是將那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任封裝起來,便於減少系統的重複**,降低模組間的耦合度,並有利於未來的可操作性和可維護性。aop代表的是乙個橫向的關係,如果說「物件」是乙個空心的圓柱體,其中封裝的是物件的屬性和行為;那麼面向方面程式設計的方法,就彷彿一把利刃,將這些空心圓柱體剖開,以獲得其內部的訊息。而剖開的切面,也就是所謂的「方面」了。然後它又以巧奪天功的妙手將這些剖開的切面復原,不留痕跡。

橫切關注點

乙個關注點(concern)就是乙個特定的目的,一塊我們感興趣的區域,一段我們需要的邏輯行為。從技術的角度來說,乙個典型的軟體系統包含一些核心的關注點和系統級的關注點。舉個例子來說,乙個信用卡處理系統的核心關注點是借貸/存入處理,而系統級的關注點則是日誌、事務完整性、授權、安全及效能問題等,許多關注點——即橫切關注點。

aop的實現

**(動態,靜態),cglib。

目前本人對aop的理解就到這裡了,接下來會不斷結合專案對改制時進行進一步的完善的。

AOP面向切面程式設計

1 概念 面向切面程式設計,通過預編譯方式和執行期動態 實現程式功能的統一維護的一種技術。aop是oop的延續,利用aop可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程式的可重用性,同時提高了開發的效率 2 作用 1.解耦,將通用性的功能模組 與業務 解耦 ioc專...

AOP 面向切面程式設計

aop aspect oriented programming 即面向切面程式設計,可以說是oop object oriented programming 物件導向程式設計的補充和完善。面向切面程式設計是物件導向中的一種方式而已。在 執行過程中,動態嵌入其他 叫做面向切面程式設計。常見的使用場景 日...

AOP面向切面程式設計

1 連線點 joinpoint 程式執行的某個特定位置 如方法呼叫前後,方法丟擲異常後 乙個類或一段程式 擁有一些具有邊界性質的連線點。2 切點 pointcut 切點相當於查詢條件,乙個切點可以匹配多個連線點,如下所示,即用到了reviewlist這個註解的都符合條件。pointcut annot...