Spring 之依賴注入Dependency Injection
阿新 • • 發佈:2022-03-05
Spring 之依賴注入Dependency Injection
一 依賴注入
控制反轉IOC和依賴注入DI是同一概念
在spring裡 被呼叫者例項不再由呼叫者來建立 ,由Spring容器建立,然後注入到需要的呼叫者
二
為什麼依賴注入:
面向物件建模面臨的問題:
資料邊界和行為邊界往往不一致
行為往往跨越多個領域物件:
通過類將行為和其緊密耦合的資料封裝在一起,多領域物件行為在一物件中中必然會導致別的物件需要向該物件暴漏其內部狀態
DDD模式 領域驅動設計(Domain Driven Desing,簡稱DDD):
領域驅動設計就是在可擴充套件性方面: 將複雜多變的業務排除在穩定不變的核心業務之外 : 實現核心業務,利用分層架構抽取複雜業務
鬆散分層架構中: 允許某層與它的任意下方層發生耦合。
嚴格分層架構: 某層只能與位於其直接下方的層發生耦合.
核心業務只為其中一層,其上為使用者介面層(User Interface)和應用層(Application Layer),其下是基礎設施層(Infrastructure Layer)
導致兩極:
貧血模型
若將跨越多個領域物件的行為建模在領域服務中。如果這種做法使用過度,則會導致領域物件變成只提供一堆get方法的啞物件
充血模型:
認為方法應該屬於領域物件,所有的業務行為被放在領域物件中,隨著支援的業務場景變多,導致領域物件而變成上帝類,而且類內部方法的抽象層次很難一致。另外由於行為邊界很難恰當,導致物件之間資料訪問關係也比較複雜
DCI模式是DDI補充
高層模組不應該依賴於底層模組,兩者都應該依賴於抽象。抽象不應該依賴於細節,細節應該依賴於抽象。