簡明扼要談Spring IOC的好處

簡明扼要談Spring IOC的好處

 

IOC:控制反轉,它是不是什麼技術,它是一種設計模式。所謂控制反轉就是由容器控制程序間的關係,而不是傳統實現中,由編程代碼直接操控。說白了就是由容器控制對象間的依靠關係

DI:Dependency Injection 依靠注入 ,即組件(對象)之間的依靠關係由容器在運行期間決定。其實依靠注入和控制反轉是對同一概念的不同描述。

 

    Spring通過這種控制反轉(IoC)的設計模式促進了鬆耦合。當應用了IoC,一個對象依靠的其它對象會通過被動的方式傳送進來,而不是這個對象自己創建或者查找依靠對象。不是對象從容器中查找依靠,而是容器在對象初始化時不等對象請求就主動將依靠傳送給它。我們可以把IoC模式看做是工廠模式的昇華,可以把IoC看作是一個大工廠,只不過這個大工廠裏要生成的對象都是在XML文件中給出定義的,然後利用Java的“反射”編程,根據XML中給出的類名生成相應的對象。從實現來看,IoC是把以前在工廠方法裏寫死的對象生成代碼,改變爲由XML文件來定義,也就是把工廠和對象生成這兩者獨立分隔開來,目的就是提高靈活性和可維護性。


    其實控制反轉就是不需要我們手動new一個對象了,它把我們所要實例化的對象都寫在了配置文件xml中了,一般這個類都是我們應用的業務類(Business Object)。框架內部已經將xml中配置的類自動實例化成對象,當我們調用某個類A,並且這個類中存在另一個類B時,我們就說A依靠於B,容器就會將B對象注入到A類中,大多數情況下都是通過A類中的setB()方法注入進來的。以前是由類中的代碼查找類並new對象,現在是xml文件控制的對象的生成,控制權由程序代碼轉移到了xml文件中。這樣做還是有好處的,假如在A中需要5個對象,那麼A類中就會new5個對象,不管以後A中用不用到這5個類,只要用到A類,就會把這5個類全部new出來。假如我們在xml文件中定義類的話,當類需要用到其中的三個類時,就會用對應的set類()方法將對象注入進來,不用的就不注入進來,由此看來,第一個方法時將類A和5個類緊緊聯繫起來,不管用不用到5個類都new一下,真浪費,而第二個方法是第一個類你需要我的時候我就注入進來被你用,你不需要就和我沒關係。這樣類A和其中的5個類是分別獨立的互不干預,當有關係的時候,容器自動注入關係。沒關係的時候,你是老大,我也是大哥!


轉自:http://a-kuei.iteye.com/blog/676524

發佈了6 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章