天天看點

Spring 學習之路(二): Spring IOC(DC) 的初步了解

Spring最重要的功能之一: IOC(DI)

  • IOC(Inversion of Control):其思想是反轉資源擷取的方向. 傳統的資源查找方式要求元件向容器發起請求查找資源. 作為回應, 容器适時的傳回資源. 而應用了 IOC 之後, 則是容器主動地将資源推送給它所管理的元件, 元件所要做的僅是選擇一種合适的方式來接受資源. 這種行為也被稱為查找的被動形式
  • DI(Dependency Injection) — IOC 的另一種表述方式:即元件以一些預先定義好的方式(例如: setter 方法)接受來自如容器的資源注入. 相對于 IOC 而言,這種表述更直接

通過一張圖來簡單解釋Spring中的IOC

Spring 學習之路(二): Spring IOC(DC) 的初步了解
  • 個人見解:以前當我們建立一個javaBean并且需要使用它的時候,通常是需要手工的對其進行初始化,然後調用這個對象的屬性和方法,IOC容器的存在,使得我們從繁瑣的建立過程中脫離出來,将javaBean或者其他元件的控制權交給了Spring,我們不需要親自去建立各種需要的元件,隻要告訴spring,我們需要什麼,那麼spring就自動的為我們提供什麼
  • 舉例說明:我們以前買菜都是親自提着菜籃子去菜市場買菜,突然有一天,菜市場說不需要我們再跑去菜市場了,而是由菜市場親自為我們送菜,隻需要把菜籃子放在家門口,告訴菜市場我們需要一個白菜,那麼白菜就會被自動被填充進菜籃子,大大友善我們後續的做菜(開發)流程

IOC發展曆程(以業務層為例)

  1. 接口和實作類:業務層需要一個美女(接口),得自己提供一個柳岩或者佟麗娅的執行個體
  2. 工廠模式:業務層不需要關注執行個體到底怎麼生成的,隻需要向工廠需求一個美女,工廠自動給我們提供一個柳岩或者迪麗熱巴
  3. IOC(反轉控制):業務層需要一個美女,我們不用再寫工廠類,直接從IOC容器中已經建立好的執行個體取就行了,IOC幫我們自動完成業務層屬性到IOC容器執行個體的引用