依賴查找與依賴注入


1.依賴查找

依賴查找是控制反轉設計原則的一種實現方式。大體思路是:容器中的受控對象通過容器的API來查找自己所依賴的資源和協作對象。這種方式雖然降低了對象間的依賴,但是同時也使用到了容器的API,造成了我們無法在容器外使用和測試對象。依賴查找是一種更加傳統的IOC實現方式。

兩種查找方式:

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

2.依賴注入

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

四種注入方式:

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

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

3.優劣對比

類型 依賴處理 實現便利性 代碼侵入性 API依賴性 可讀性
依賴查找 主動獲取 相對繁瑣 侵入業務邏輯 依賴容器API 良好
依賴注入 被動提供 相對便利 低侵入性 不依賴容器API 一般


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM