什麼是面向切面編程編程
橫切關注點:影響應用多處的功能(安全、事務、日誌)安全
切面:模塊化
橫切關注點被模塊化爲特殊的類,這些類稱爲切面代理
優勢:日誌
每一個關注點如今都集中於一處,而不是分散到多處代碼中
服務模塊更簡潔,服務模塊只需關注核心代碼。對象
AOP 術語生命週期
- Before——在方法調用以前調用通知
- After——在方法完成以後調用通知,不管方法執行成功與否
- After-returning——在方法執行成功以後調用通知
- After-throwing——在方法拋出異常後進行通知
- Around——通知包裹了被通知的方法,在被通知的方法調用以前和調用以後執行自定義的行爲
- 編譯期——切面在目標類編譯時期被織入,這種方式須要特殊編譯器。AspectJ的織入編譯器就是以這種方式織入切面。
- 類加載期——切面在類加載到
- JVM ,這種方式須要特殊的類加載器,他能夠在目標類被引入應用以前加強該目標類的字節碼。AspectJ5 的 LTW 就支持這種織入方式
- 運行期——切面在應用運行期間的某個時刻被織入。通常狀況下,在織入切面時候,AOP 容器會爲目標對象動態的建立代理對象。Spring AOP 就是以這種方式織入切面。