您好,登錄后才能下訂單哦!
什么叫做AOP的概述,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
在前面的案例中我么需要自己創建ApplicationContext對象,然后在調用getBean來獲取需要測試的Bean
Spring提供了一種更加方便的方式來創建測試所需的ApplicationContext,并且可以幫助我們把需要測試的Bean直接注入到測試類中
在軟件業,AOP為AspectOrientedProgramming的縮寫,翻譯為:面向切面編程,通過預編譯方式和運行期動態代理實現程序功能的統一維護的一種技術。AOP是OOP的延續,是軟件開發中的一個熱點,也是Spring框架中的一個重要內容,是函數式編程的一種衍生范型。利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發的效率。
在項目開發中我們經常遇到一系列通用需求比如:權限控制,日志輸出,事務管理,數據統計等,這寫看似簡單的需求,在實際開發中卻會帶來麻煩。
我們先不考慮如何解決這些問題,其實AOP之所以出現就是因為,我們需要對一些已經存在的方法進行功能擴展,但是又不能通過修改源代碼或改變調用方式的手段來解決
反過來說就是要在保證不修改源代碼以及調用方式不變的情況下為原本的方法增加功能
而由于需要擴展的方法有很多,于是把這些方法稱作一個切面,即切面就是一系列需要擴展功能的方法的集合
將日志記錄,性能統計,安全控制,事務處理,異常處理等重復代碼從業務邏輯代碼中劃分出來,通過對這些行為的分離,我們希望可以將它們獨立到非業務邏輯的方法中,進而改變這些行為的時候不會影響業務邏輯的代碼。
直接看名字的確是比較抽象的,沒辦法,當你創造了一個全新的東西時,你往往也會想給它取一個nb的名字,而這個解決方案是針對一些固定場景的,我們很難找到一個非常準確的名字去描述這個方案
AOP這一概念是AOP聯盟aopalliance提出的,相關的概念也出自aopalliance定義
連接點(joinpoint)
是擴展內容與原有內容的交互的點,可以理解為可以被擴展的地方,通常是一個方法,而AspectJ中也支持屬性作為連接點
示例:案例中的三個方法
切點(pointcut)
切點指的是要被擴展(增加了功能)的內容,包括方法或屬性(joinpoint)
示例:案例中的兩個增加了功能的方法
通知(adivce)
通知指的是要在切點上增加的功能
按照執行時機不同分為:
前置,后置,異常,最終,環繞,引介
引介通知指的是在不修改類代碼的前提下,為類增加方法或屬性(了解即可非重點)
示例:上述案例中的輸出執行時間功能
目標(target)
目標就是要應用通知的對象,即要被增強的對象
示例:上述案例中的userDao
織入(weaving)
織入是一個動詞,描述的是將擴展功能應用到target的這個過程
示例:案例中修改源代碼的過程
代理(proxy)
Spring是使用代理來完成AOP,對某個對象增強后就得到一個代理對象;
SpringAOP的整個過程就是對target應用advice最后產生proxy,我們最后使用的都是proxy對象;貍貓換太子,偷梁換柱;
切面(aspect)
是切入點和通知的結合切面,是一個抽象概念;一個切面指的是所有應用了同一個通知的切入點的集合
關于什么叫做AOP的概述問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。