1. 程式人生 > >spring面向切面程式設計理解

spring面向切面程式設計理解

有點理論性但是看完這章之後真的覺得可以巨集觀理解AOP到底是啥

面向切面程式設計(AOP,aspect-oriented programming)
定義:促使軟體系統實現關注點的分離一項技術。系統是由許多元件組成,每個元件各負責一塊特定功能,還有可能承擔日誌,事務管理和安全等系統服務中去,這些系統服務稱為橫切關注點,因為它可以跨越系統的多個元件。
將這些關注點分散到多個元件中,會帶來一些問題:

  • 實現系統關注點功能的程式碼將會重複出現在多個元件中。這意味著如果你要改變這些關注點的邏輯,必須修改各個模組中的相關實現。即使你把這些關注點抽象為一個獨立的模組,其他模組只是呼叫它的方法,但方法的呼叫還是會重複出現在各個模組中。
  • 元件會因為那些與自身核心業務無關的程式碼而變得混亂。一個業務的方法應該只關注業務本身,而不應該關注它 是不是安全的或者是否需要支援事務。

左邊的業務物件與系統級服務結合得過於緊密。每個物件不但要知道它需要記日誌、進行安全控制和參與事務,還 要親自執行這些服務。

在這裡插入圖片描述

AOP能使這些系統服務模組化,並且用宣告的方式來把他們應用到需要的元件中,這樣使元件具有更高的內聚性更加關注自身的業務,而不需要了解系統服務的所帶來的複雜性,AOP保持了POJO的簡潔性。

我們可以把切面想象為覆蓋在很多元件之上的一個外殼。應用是由那些實現各自業務功能的模組組成的。藉助AOP,可以使用 各種功能層去包裹核心業務層。這些層以宣告的方式靈活地應用到系統中,你的核心應用甚至根本不知道它們的存在。這是一個非常強大的理 念,可以將安全、事務和日誌關注點與核心業務邏輯相分離。
在這裡插入圖片描述

本文參考資料:《spring實戰(第四版)》