spring的AOP,IOC,代理什麼關係?

什麼是框架?

框架自然是製作好了基本架子,在高級語言代碼開發功能角度來看。框架制定了功能模塊,用戶使用框架,也是爲了使用這些功能模塊,而程序員使用框架也是基於框架的功能進行業務功能的開發。那麼spring的核心功能是什麼呢?

AOP定義

定義: 不修改源代碼的情況下給程序中多個點上動態添加功能的一種技術

連接點: 可以被選擇來進行增強的方法點
切入點: 選擇增強的方法
通知: 增強功能

AOP實現思想

作爲設計者如何實現AOP功能?功能---->代碼---->類----->方法,即我們如何編寫類方法實現增強的功能。當我們不知道用戶要增強什麼什麼功能時,需要定義一套標準的API來應對變化未知。這套標準應該解決兩個問題

  • 增強的具體功能,是方法執行前(能拿到參數)還是方法執行之後(返回結果),還是整個方法過程中,有異常處理如何增強?
  • 增強的位置是哪個類的哪個方法

具體實現

1、定義一套標準:使用面向接口編程,接口目的是規範用戶,提供功能邏輯,用戶通過實現這個接口,實現功能邏輯

2、增強的具體功能:
在這裏插入圖片描述

3、增強的位置:
在這裏插入圖片描述

IOC與AOP的關係

當增強類編寫完成,切入點類也編寫完成,那麼如何讓用戶自己書寫的類被用戶書寫的增強類切中併產生關聯呢?

此時就需要將用戶編寫的類交給框架來生產,在生產類的過程中,框架會判斷類是否需要被增強,當需要被增強時,框架會使用代理的方式將類的實例中的方法進行增強,生成另外一個增強後的實例對象返回給用戶。那麼這個生產的過程就叫做IOC。

在這裏插入圖片描述

代理模式

1、代理過程

在這裏插入圖片描述
2、靜態代理
在這裏插入圖片描述
3、動態代理
在這裏插入圖片描述

4、具體增強邏輯

在這裏插入圖片描述