spring aop

什麼是面向切面編程編程

橫切關注點:影響應用多處的功能(安全、事務、日誌)安全

切面:模塊化

橫切關注點被模塊化爲特殊的類,這些類稱爲切面代理

優勢:日誌

每一個關注點如今都集中於一處,而不是分散到多處代碼中 
服務模塊更簡潔,服務模塊只需關注核心代碼。對象

AOP 術語生命週期

  • 通知: 
    • 定義:切面也須要完成工做。在 AOP 術語中,切面的工做被稱爲通知。
    • 工做內容:通知定義了切面是什麼以及什麼時候使用。除了描述切面要完成的工做,通知還解決什麼時候執行這個工做。
    • Spring 切面可應用的 5 種通知類型:
  1. Before——在方法調用以前調用通知
  2. After——在方法完成以後調用通知,不管方法執行成功與否
  3. After-returning——在方法執行成功以後調用通知
  4. After-throwing——在方法拋出異常後進行通知
  5. Around——通知包裹了被通知的方法,在被通知的方法調用以前和調用以後執行自定義的行爲
  • 鏈接點: 
    • 定義:鏈接點是一個應用執行過程當中可以插入一個切面的點。
    • 鏈接點能夠是調用方法時、拋出異常時、甚至修改字段時、
    • 切面代碼能夠利用這些點插入到應用的正規流程中
    • 程序執行過程當中可以應用通知的全部點。
  • 切點: 
    • 定義:若是通知定義了「什麼」和「什麼時候」。那麼切點就定義了「何處」。切點會匹配通知所要織入的一個或者多個鏈接點。
    • 一般使用明確的類或者方法來指定這些切點。
    • 做用:定義通知被應用的位置(在哪些鏈接點)
  • 切面: 
    • 定義:切面是通知和切點的集合,通知和切點共同定義了切面的所有功能——它是什麼,在什麼時候何處完成其功能。
  • 引入: 
    • 引入容許咱們向現有的類中添加方法或屬性
  • 織入: 
    • 織入是將切面應用到目標對象來建立的代理對象過程。
    • 切面在指定的鏈接點被織入到目標對象中,在目標對象的生命週期中有多個點能夠織入
  1. 編譯期——切面在目標類編譯時期被織入,這種方式須要特殊編譯器。AspectJ的織入編譯器就是以這種方式織入切面。
  2. 類加載期——切面在類加載到
  3. JVM ,這種方式須要特殊的類加載器,他能夠在目標類被引入應用以前加強該目標類的字節碼。AspectJ5 的 LTW 就支持這種織入方式
  4. 運行期——切面在應用運行期間的某個時刻被織入。通常狀況下,在織入切面時候,AOP 容器會爲目標對象動態的建立代理對象。Spring AOP 就是以這種方式織入切面。
相關文章
相關標籤/搜索