依賴查找與依賴注入

1.依賴查找

依賴查找是控制反轉設計原則的一種實現方式。大致思路是:容器中的受控對象經過容器的API來查找本身所依賴的資源和協做對象。這種方式雖然下降了對象間的依賴,可是同時也使用到了容器的API,形成了咱們沒法在容器外使用和測試對象。依賴查找是一種更加傳統的IOC實現方式。函數

兩種查找方式:測試

  • 依賴拖拽(DP):注入的對象如何與組件發生聯繫,這個過程就是經過依賴拖拽實現;
  • 上下文化依賴查找(CDL):在某些方面跟依賴拖拽相似,可是上下文依賴查找中,查找的過程是在容器管理的資源中進行的,而不是從集中註冊表中,而且一般是做用在某些設置點上;

2.依賴注入

依賴注入是自身對象中的內置對象是經過注入的方式進行建立,無需依賴特定的容器和API。容器全權負責組件的裝配,它會把符合依賴關係的對象經過屬性(JavaBean中的setter)或者是構造子傳遞給須要的對象。設計

四種注入方式:code

  • 構造函數方法注入
  • Setter方法注入
  • 接口注入
  • 基於註解的依賴注入

注:Spring主要提供了@Autowired@Resource註解模式:
1.@Autowired註解,能夠對Bean類成員變量、方法及構造函數進行標註,完成依賴注入的自動裝配工做。使用@Autowired能夠省略Bean類的待依賴注入對象的set方法,默認狀況下按照依賴注入對象的類型自動進行匹配。
2.@Resource註解的功能和@Autowired註解功能相近,它有nametype兩個主要的屬性。Spring容器對於@Resource註解的name屬性解析爲bean的名字,type屬性則解析爲bean的類型。對象

3.優劣對比

類型 依賴處理 實現便利性 代碼侵入性 API依賴性 可讀性
依賴查找 主動獲取 相對繁瑣 侵入業務邏輯 依賴容器API 良好
依賴注入 被動提供 相對便利 低侵入性 不依賴容器API 通常
相關文章
相關標籤/搜索