Spring依賴注入和NEW的差別


Sping為什么使用依賴注入而不使用實例化對象的方式?

首先說明一下概

依賴注入(Dependency of Injection)和控制反轉(Inversion of Control 簡稱:ioc)是一個概念。

具體含義:

   當某個角色(Java實例class A,調用者)需要另一個角色(另一個Java實例class B,被調用者)的協助時,在傳統的程序設計過程中通常由調用者來創建被調用者的實例(在class A里面 初始化class B)。
但在Spring里,創建被調用者實例的工作不再由調用者來完成。因此成為控制反轉(ioc)。創建被調用者實例的工作由Spring容器來完成,然后注入調用者。因此也稱為依賴注入

不管是依賴注入還是控制反轉,都說明Spring采用動態靈活的方式來管理各種對象,對象與對象之間的具體實現互相透明。

  • 第一種情況下,Java實例的調用者創建被調用的Java實例,必然要求被調用的Java類出現在調用者的代碼里。無法實現二者之間的松耦合。
  • 第二種情況下,調用者無須關心被調用者具體實現過程,只需要找到符合某種標准(接口)的實例,即可使用。此時調用的代碼面向接口編程,可以讓調用者和被調用者解耦,這也是工廠模式大量使用的原因。但調用者需要自己定位工廠,調用者與特定工廠耦合在一起。
  • 第三種情況下,調用者無須自己定位工廠,程序運行到需要被調用者時,系統自動提供被調用者實例。事實上,調用者和被調用者都處於Spring的管理下,二者之間的依賴關系由Spring提供。


所謂依賴注入,是指程序運行過程中,如果需要調用另一個對象協助時,無須在代碼中創建被調用者,而是依賴於外部的注入。Spring的依賴注入對調用者和被調用者幾乎沒有任何要求,完全支持對POJO之間依賴關系的管理。依賴注入通常有三種:

- set設值注入
- 構造方法注入
- spring注解注入

其他方式:接口注入,靜態工廠注入,實例工廠注入

 


免責聲明!

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



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