【Spring】(8)AOP - 簡單介紹

一、什麼是 AOP

在軟件業,AOP爲Aspect Oriented Programming的縮寫,意爲:面向切面編程,通過預編譯方式和運行期間動態代理實現程序功能的統一維護的一種技術。AOP是OOP的延續,是軟件開發中的一個熱點,也是Spring框架中的一個重要內容,是函數式編程的一種衍生範型。利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發的效率。

在這裏插入圖片描述

AOP和IoC一樣,也是一種思想,是Spring Framework的核心。

二、AOP 在Spring中的作用

AOP is used in the Spring Framework to:

  • Provide declarative enterprise services. The most important such service is declarative transaction management.
  • Let users implement custom aspects, complementing their use of OOP with AOP.

作用:

  • 提供聲明式事務
  • 允許用戶自定義切面

三、AOP 概念

1.AOP術語概念

AOP 中的術語概念。

橫切關注點:跨越應用程序多個模塊的方法或功能。是與我們業務邏輯無關的,但是我們需要關注的部分,就是橫切關注點。如:日誌、安全、緩存、事務等等…

  • Aspect(切面 ):涉及多個類別的關注點的模塊化。事務管理是企業Java應用程序中橫切關注的一個很好的例子。(橫切關注點 被模塊化的特殊對象。切面就是一個類)

  • Advice(通知 | 建議):方面在特定的連接點處採取的操作。不同類型的通知包括“around環繞”,“before之前”和“after之後”建議(通知)。 (切面必須完成的工作。它是類中的一個方法。)

  • Join point(連接點): 程序執行過程中的一個點,例如方法執行或異常處理。在Spring AOP中,連接點始終代表方法的執行。(與切入點匹配的執行點,也就是方法在什麼地方執行)

  • Pointcut(切點): 與連接點匹配的謂詞。建議與切入點表達式關聯,並在與該切入點匹配的任何連接點處運行(例如,執行具有特定名稱的方法)。切入點表達式匹配的連接點的概念是AOP的核心,並且Spring默認使用AspectJ切入點表達語言。(切面通知執行的 “地點” 定義)

  • Target object(目標對象): 一個或多個方面通知的對象。也稱爲“通知對象”。由於Spring AOP是使用運行時代理實現的,因此該對象始終是代理對象。(被通知的對象)

  • AOP proxy(代理):由AOP框架創建的一個對象,用於實現方面協定(通知方法執行等)。在Spring Framework中,AOP代理是JDK動態代理或CGLIB代理。(向目標對象應用通知之後創建的對象)

在這裏插入圖片描述

2.AOP五種通知(Advice)

  • 前置通知(Before advice):在連接點之前運行的通知,但是它不能阻止執行流程繼續進行到連接點(除非它引發異常)。(方法前加一個通知)
  • 後置通知(After returning advice):在連接點正常完成之後要運行的通知(例如,如果一個方法沒有拋出異常而返回)。(方法後加一個通知)
  • 環繞通知(Around advice):圍繞連接點的建議,例如方法調用。(方法前後加通知)
  • 異常拋出通知(After throwing advice):如果方法因拋出異常而退出,則執行通知。(方法拋出異常加一個通知)
  • 引介(最終)通知(After (finally) advice):無論連接點退出的方式如何(正常或特殊返回),均應執行建議。(類中增加新的方法屬性)

圍繞建議是最通用的建議。由於Spring AOP與AspectJ一樣,提供了各種建議類型,因此我們建議您使用功能最弱的建議類型,以實現所需的行爲。例如,如果您只需要使用方法的返回值更新緩存,則最好使用返回後的建議而不是周圍的建議,儘管周圍的建議可以完成相同的事情。使用最具體的建議類型可提供更簡單的編程模型,並減少潛在的錯誤。
在這裏插入圖片描述

參考:Spring入門學習(六)

相關

我的該分類的其他相關文章,請點擊:【Spring + Spring MVC + MyBatis】文章目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章