Spring 的IoC容器通過接口注入的方式降低對象之間的依賴關系,也就是降低了業務組件之間的耦合性,業務組件之間的依賴通過配置來實現。應用代碼中不需要創建對象。換句話說,就是在配置文件中對哪個組件需要哪項服務進行描述,而不在代碼中以硬編碼的方式直接和對象與服務器連接。之后IoC容器將負責將他們聯系在一起,這是基于面向接口編程原則的高級產物。
在Spring配置文件中,可以看到一些有著特定名字的Bean,Bean下面的配置是一些屬性(property)。這些就是Spirng的核心IoC容器的配置,可以方便地對Spring MVC進行擴展和增強。
IoC機制有什么好處?說白了就是解耦。舉個簡單的例子來說,我們經常寫測試用例,但是在寫用例的時候,可能因為某些業務邏輯中依賴了其他第三方提供的接口,而這些第三方接口僅僅給你提供了接口定義而沒有具體運行環境支撐的時候,我們的測試用例根本無法順利運行起來,這時我們想到了Mock,用Mock類來模擬第三方的接口。這時候如果Mock不是基于Spring的IoC體系建立的話,測試用例就會形成對Mock的強依賴。想象一個場景,使用Mock的用例我們跑通了,但是如果要切換到真實的第三方環境中運行測試用例呢,如何能在不修改代碼的前提下實現?可以,因為有IoC容器。IoC讓我們被迫基于接口編程,也給了我們極大的便利,只要在Spring運行上下文配置文件中修改測試用例中所注入的Bean定義,就可以切換到真實環境下的測試場景,僅僅是一個配置定義的修改,無需改變任何代碼,很輕松的吧。