spring ioc三種注入方式
IOC ,全稱 (Inverse Of Control) ,中文意思為:控制反轉
什么是控制反轉?
控制反轉是一種將組件依賴關系的創建和管理置於程序外部的技術。
由容器控制程序之間的關系,而不是由代碼直接控制
由於控制權由代碼轉向了容器,所以稱為反轉
- 接口注入
- Setter 注入
- 構造器注入
三種依賴注入方式的比較 :
接口注入:
接口注入模式因為歷史較為悠久,在很多容器中都已經得到應用。但由於其在靈活性、易用性上不如其他兩種注入模式,因而在 IOC 的專題世界內並不被看好。
Setter 注入:
對於習慣了傳統 javabean 開發的程序員,通過 setter 方法設定依賴關系更加直觀。
如果依賴關系較為復雜,那么構造子注入模式的構造函數也會相當龐大,而此時設值注入模式則更為簡潔。
如果用到了第三方類庫,可能要求我們的組件提供一個默認的構造函數,此時構造子注入模式也不適用。
構造器注入:
在構造期間完成一個完整的、合法的對象。
所有依賴關系在構造函數中集中呈現。
依賴關系在構造時由容器一次性設定,組件被創建之后一直處於相對“不變”的穩定狀態。
只有組件的創建者關心其內部依賴關系,對調用者而言,該依賴關系處於“黑盒”之中。