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實例,必然要求被調用的Java類出如今調用者的代碼裏。沒法實現兩者之間的鬆耦合。
  • 第二種狀況下,調用者無須關心被調用者具體實現過程,只須要找到符合某種標準(接口)的實例,便可使用。此時調用的代碼面向接口編程,可讓調用者和被調用者解耦,這也是工廠模式大量使用的緣由。但調用者須要本身定位工廠,調用者與特定工廠耦合在一塊兒。
  • 第三種狀況下,調用者無須本身定位工廠,程序運行到須要被調用者時,系統自動提供被調用者實例。事實上,調用者和被調用者都處於Spring的管理下,兩者之間的依賴關係由Spring提供。


所謂依賴注入,是指程序運行過程當中,若是須要調用另外一個對象協助時,無須在代碼中建立被調用者,而是依賴於外部的注入。Spring的依賴注入對調用者和被調用者幾乎沒有任何要求,徹底支持對POJO之間依賴關係的管理。依賴注入一般有三種:

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

其餘方式:接口注入,靜態工廠注入,實例工廠注入編程

相關文章
相關標籤/搜索