一、Spring AOP是什麼?
AOP(Aspect-Oriented Programming),被譯為“面向切面程式設計”,是通過預編譯的方式或運作時動态代理方法(詳見:《Spring架構 之 代理模式》)實作業務中的擴充功能。AOP與OOP兩種程式設計思想共同幫助開發者管理對象之間的資料結構(詳見:《Spring架構 之 Spring理論基礎》),是以常有人說AOP是OOP思想的一種擴充。
Spring整合AspectJ架構,底層使用動态代理的方式幫助開發者簡化了面向切面程式設計。Spring AOP是Spring架構的核心功能子產品之一。
二、Spring AOP的應用場景
與代理模式一樣,Spring AOP基于OCP原則,在不改變原有功能代碼的基礎上擴充新的功能,并且實作業務代碼解耦,提高代碼的可重用性,以簡化代碼編寫,提高開發效率。Spring AOP廣泛應用于處理一些具有橫切性質(貫穿于)的系統級服務,如系統日志處理,事務處理,安全驗證,資料緩存等。例如登入和權限驗證:

三、Spring AOP中術語解釋
切面(Aspect):橫切面對象,一般為一個具體類對象,其中定義了一個或多個通知
通知(Advice):在切面的某個特定連接配接點上執行的動作,即具體要執行擴充業務方法
切入點(Pointcut):定義應該對于那些核心業務(原業務)進行擴充
連接配接點(Joinpoint):被擴充業務修飾的原業務,即被切面和切點攔截到的具體方法
引入(Introduction):引入允許我們向現有的類添加新方法或屬性
織入(Weaving):織入是把切面應用到目标對象并建立新代理對象的過程
Spring AOP依賴于代理機制,在程式運作期間,可以動态地根據切面、通知及切點的定義,為目标對象織入新的擴充功能。