我所理解的Spring AOP的基本概念

Spring AOP中的概念晦澀難懂,讀官方文檔更是像讀天書,看了很是多樣例後,寫一些本身理解的一些spring的概念。要理解面向切面編程,要首先理解代理模式和動態代理模式。spring

若是一個OA系統中的一個功能是查看考勤信息,那麼咱們若是有要實現這個功能,要經歷的步驟是:數據庫

1.啓動日誌,進行記錄。編程

2.啓動安全性的框架進行安全檢驗安全

3.驗證權限          框架

4.假設有權限,則查看考勤記錄,假設無權限,則輸出沒有權限。spa

咱們的目標方法是查看考勤記錄,而前面運行了那麼多與目標方法無關的方法。代理

那些與業務邏輯無關的方法叫切面。切面中的方法爲通知。當驗證權限經過後,就運行目標方法,則切入點就是驗證權限的那個方法。造成代理方法的過程叫作織入,在client調用的方法就是鏈接點。日誌

切面對象

    日誌、安全性的框架、權限的檢查等,總之和業務邏輯沒有關係的都可以看作切面事務

 通知

    切面中的方法

切入點

    僅僅有符合切入點,才幹把通知和目標方法結合在一塊兒(就像樣例中,僅僅有符合了權限,才幹查看考勤記錄)

鏈接點

   client調用的方法

 代理對象的方法=通知+目標方法(代理方法加強了對象的目標方法)

 aop(面向切面編程):作到了代碼塊的重用

面向切面編程爲何作到了代碼塊的重用?那些切面在不一樣的地方可以調出來用,切面就是不一樣功能的代碼塊,可以經過代理模式加強某些目標方法。

再舉個樣例,對數據庫的增刪改查,增刪改要開啓事務管理,查不需要開啓事務管理,對於開啓事務,和提交事務,都屬於非目標方法,可以看作切面,而增刪改,是目標方法。開啓事務和提交事務中的方法,是通知。經過動態代理模式,可以把通知和目標方法結合在一塊兒。

相關文章
相關標籤/搜索