Spring 的面向切面程式設計

面向切面程式設計 (AOP) 透過提供另一種思考程式結構的方式來補充面向物件程式設計 (OOP)。OOP 中的模組化關鍵單元是類,而 AOP 中的模組化單元是 Aspect。Aspect 可以實現關注點(例如事務管理)的模組化,這些關注點貫穿多個型別和物件。(這類關注點在 AOP 文獻中通常被稱為“橫切”關注點。)

Spring 的關鍵元件之一是 AOP 框架。雖然 Spring IoC 容器不依賴於 AOP(意味著如果你不想使用 AOP,則不需要使用),但 AOP 補充了 Spring IoC,提供了一個非常強大的中介軟體解決方案。

Spring AOP 與 AspectJ pointcuts

Spring 提供了透過使用基於 schema 的方法@AspectJ 註解風格來編寫自定義 aspect 的簡單而強大的方式。這兩種風格都提供了完全型別化的 advice,並使用 AspectJ pointcut 語言,同時仍然使用 Spring AOP 進行織入。

本章討論基於 schema 和 @AspectJ 的 AOP 支援。下一章將討論更底層的 AOP 支援。

AOP 在 Spring Framework 中用於

  • 提供宣告式企業服務。其中最重要的服務是宣告式事務管理

  • 允許使用者實現自定義 aspect,用 AOP 補充他們對 OOP 的使用。

如果你只對通用宣告式服務或其他預打包的宣告式中介軟體服務(如連線池)感興趣,則無需直接使用 Spring AOP,可以跳過本章大部分內容。