1. 程式人生 > >Spring核心思想,IoC與DI詳解(如果還不明白,放棄java吧)

Spring核心思想,IoC與DI詳解(如果還不明白,放棄java吧)

1.IoC是什麼?
   IoC(Inversion of Control)控制反轉,IoC是一種新的Java程式設計模式,目前很多輕量級容器都在廣泛使用的模式。

 2.IoC解決了什麼問題?
   在IoC出現以前,元件之間的協調關係是由程式內部程式碼來控制的,或者說,以前我們使用New關鍵字來實現兩組間之間的依賴關係的。
   這種方式就造成了元件之間的互相耦合。IoC(控制反轉)就是來解決這個問題的,它將實現元件間的關係從程式內部提到外部容器來管理。
   也就是說,由容器在執行期將元件間的某種依賴關係動態的注入元件中。


 3.IoC的實現方式 及 與DI的關係?
   (1).依賴查詢(Dependency Lookup):容器中的受控物件通過容器的API來查詢自己所依賴的資源和協作物件。
 這種方式雖然降低了物件間的依賴,但是同時也使用到了容器的API,造成了我們無法在容器外使用和測試物件。
   依賴查詢是一種更加傳統的IoC實現方式。

   (2).依賴注入(Dependency Injection):這就是DI,字面上理解,依賴注入就是將服務注入到使用它的地方。物件只提供普通的方法讓容器去決定依賴關係,
 容器全權負責元件的裝配,它會把符合依賴關係的物件通過屬性(JavaBean中的setter)或者是構造子傳遞給需要的物件。
      相對於IoC而言,依賴注入(DI)更加準確地描述了IoC的設計理念。所謂依賴注入,即元件之間的依賴關係由容器在應用系統執行期來決定,
 也就是由容器動態地將某種依賴關係的目標物件例項注入到應用系統中的各個關聯的元件之中。


 4.Spring中的IoC與DI:
   IoC是Spring的核心,貫穿始終。對於Spring框架來說,就是由Spring來負責控制物件的生命週期和物件間的關係。
   Spring中DI有兩種實現方式---Setter方式(傳值方式)和構造器方式(引用方式)。