AOP是Aspect Oriented Programing的簡稱,面向切面程式設計。AOP適合於那些具有橫切邏輯的應用:如效能監測,訪問控制,事務管理、快取、物件池管理以及日誌記錄。AOP將這些分散在各個業務邏輯中的程式碼透過橫向切割的方式抽取到一個獨立的模組中。AOP 實現的關鍵就在於 AOP 框架自動建立的 AOP 代理,AOP 代理則可分為靜態代理和動態代理兩大類,其中靜態代理是指使用 AOP 框架提供的命令進行編譯,從而在編譯階段就可生成 AOP 代理類,因此也稱為編譯時增強;而動態代理則在執行時藉助於 JDK 動態代理、CGLIB 等在記憶體中“臨時”生成 AOP 動態代理類,因此也被稱為執行時增強。 代理物件的方法 = 增強處理 + 被代理物件的方法 Spring AOP 則採用執行時生成 AOP 代理類,因此無需使用特定編譯器進行處理。由於 Spring AOP 需要在每次執行時生成 AOP 代理,因此效能略差一些。 AOP使用場景 AOP用來封裝橫切關注點,具體可以在下面的場景中使用 Authentication 許可權 Caching 快取 Context passing 內容傳遞 Error handling 錯誤處理 Lazy loading 懶載入 Debugging 除錯 logging, tracing, profiling and monitoring 記錄跟蹤 最佳化 校準 Performance optimization 效能最佳化 Persistence 持久化 Resource pooling 資源池 Synchronization 同步 Transactions 事務
AOP是Aspect Oriented Programing的簡稱,面向切面程式設計。AOP適合於那些具有橫切邏輯的應用:如效能監測,訪問控制,事務管理、快取、物件池管理以及日誌記錄。AOP將這些分散在各個業務邏輯中的程式碼透過橫向切割的方式抽取到一個獨立的模組中。AOP 實現的關鍵就在於 AOP 框架自動建立的 AOP 代理,AOP 代理則可分為靜態代理和動態代理兩大類,其中靜態代理是指使用 AOP 框架提供的命令進行編譯,從而在編譯階段就可生成 AOP 代理類,因此也稱為編譯時增強;而動態代理則在執行時藉助於 JDK 動態代理、CGLIB 等在記憶體中“臨時”生成 AOP 動態代理類,因此也被稱為執行時增強。 代理物件的方法 = 增強處理 + 被代理物件的方法 Spring AOP 則採用執行時生成 AOP 代理類,因此無需使用特定編譯器進行處理。由於 Spring AOP 需要在每次執行時生成 AOP 代理,因此效能略差一些。 AOP使用場景 AOP用來封裝橫切關注點,具體可以在下面的場景中使用 Authentication 許可權 Caching 快取 Context passing 內容傳遞 Error handling 錯誤處理 Lazy loading 懶載入 Debugging 除錯 logging, tracing, profiling and monitoring 記錄跟蹤 最佳化 校準 Performance optimization 效能最佳化 Persistence 持久化 Resource pooling 資源池 Synchronization 同步 Transactions 事務