概念:dependency injection, IOC, vs callback
阿新 • • 發佈:2019-01-18
setter註入 con 服務 null 種類型 truct func 翻譯 via
callback function as a dependency of the object that it is being passed into. DI is the process of providing the callback (the dependency) to the object. (For example: by giving it to the object via its constructor, a method call, a setter, etc.).
翻譯: callback是具體的依賴, DI是註入依賴的過程
DI是IoC的子集
- IoC
- DI意味著在不使用具體對象而是使用抽象(接口)的情況下完成獲取依賴對象的IoC原則。這使得所有組件鏈可測試,導致更高級別的組件不依賴於更低級別的組件,僅來自接口。Mocks實現了這些接口。
IoC(I nversion o f C ontrol ): - 這是一個通用術語,以多種方式實現(事件,代理等)。
DI(D ependency I njection): - DI是IoC的子類型,通過 構造函數註入,setter註入或接口註入實現。
但是,Spring僅支持以下兩種類型:
- 二傳手註射
- 基於setter的DI是通過在調用無參數構造函數或無參數靜態工廠方法來實例化其bean之後調用用戶bean上的setter方法來實現的。
- 構造函數註入
- 基於構造函數的DI是通過調用具有多個參數的構造函數來實現的,每個參數代表一個協作者。使用這個我們可以驗證註入的bean不是null並且快速失敗(編譯時失敗而不是運行時),所以我們得到了啟動應用程序本身
NullPointerException: bean does not exist
。構造函數註入是註入依賴項的最佳實踐。
- 基於構造函數的DI是通過調用具有多個參數的構造函數來實現的,每個參數代表一個協作者。使用這個我們可以驗證註入的bean不是null並且快速失敗(編譯時失敗而不是運行時),所以我們得到了啟動應用程序本身
概念:dependency injection, IOC, vs callback