Spring核心(ioc控制反轉),spring核心ioc反轉

來源:互聯網
上載者:User

Spring核心(ioc控制反轉),spring核心ioc反轉


IoC,Inversion Of Control 即控制反轉,由容器來管理業務對象之間的依賴關係,而非傳統方式中的由代碼來管理。

其本質,即將控制權由應用程式代碼轉到了外部容器,控制權的轉移就是所謂的反轉,其帶來的最大的好處是降低了業務對象之間的依賴程度,即實現瞭解耦。

 

Spring的IoC容器主要使用DI(Dependency Injection,依賴注入)方式實現的。不需要主動尋找,對象的尋找、定位和建立全部由容器管理,容器會將符合依賴關係的對象通過屬性(setter等)或者建構函式傳遞給需要的對象。

 

使用IoC可以帶來以下好處:

1、查詢依賴操作和應用代碼分離,大量減少了Factory和Singleton的數量,使代碼層次更加清晰,主要原因是我們不再尋找、定位、建立和管理對象之間的依賴關係了,都交給IoC容器管理了

2、沒有侵入性,不需要依賴容器的API,也不需要實現一些特殊介面。這樣我們的受控對象可以搬出容器進而單獨使用。

3、可以從IoC容器中直接獲得一個對象然後直接使用,而無需考慮對象的建立過程。(原廠模式)

 

從網上看了一個例子,覺得不錯,貼過來協助我們理解:

我們是如何找女朋友的?常見的情況是,我們到處去看哪裡有長得漂亮身材又好的mm,然後打聽她們的興趣愛好、qq號、電話號、ip號、iq號………,想辦法認識她們,投其所好送其所要,然後嘿嘿……這個過程是複雜深奧的,我們必須自己設計和面對每個環節。傳統的程式開發也是如此,在一個對象中,如果要使用另外的對象,就必須得到它(自己new一個,或者從JNDI中查詢一個),使用完之後還要將對象銷毀(比如Connection等),對象始終會和其他的介面或類藕合起來。  那麼IoC是如何做的呢?有點像通過婚介找女朋友,在我和女朋友之間引入了一個第三者:婚姻介紹所。婚介管理了很多男男女女的資料,我可以向婚介提出一個列表,告訴它我想找個什麼樣的女朋友,比如長得像李嘉欣,身材像林熙雷,唱歌像周杰倫,速度像卡洛斯,技術像施丹之類的,然後婚介就會按照我們的要求,提供一個mm,我們只需要去和她談戀愛、結婚就行了。簡單明了,如果婚介給我們的人選不符合要求,我們就會拋出異常。整個過程不再由我自己控制,而是有婚介這樣一個類似容器的機構來控制。Spring所倡導的開發方式就是如此,所有的類都會在spring容器中登記,告訴spring你是個什麼東西,你需要什麼東西,然後spring會在系統運行到適當的時候,把你要的東西主動給你,同時也把你交給其他需要你的東西。所有的類的建立、銷毀都由 spring來控制,也就是說控制對象生存周期的不再是引用它的對象,而是spring。對於某個具體的對象而言,以前是它控制其他對象,現在是所有對象都被spring控制,所以這叫控制反轉

 

其實,我們可以把IoC看做是原廠模式的升華,IoC好比是一個大工廠,只不過在這個大工廠裡產生的對象都是在XML檔案中定義的,然後利用Java的反射執行個體化。在沒有Spring之前我們也是這麼做的,只是Spring的IoC更加強大完善。

 

有利就有斃,IoC也有一定的弊端:

1、使用反射變成,在效率上有些損耗。

2、缺乏更加智能的IDE,寫XML中時,錯誤不容易暴露,延遲到運行期才能發現。

 

但相對於IoC提高的維護性和靈活性來說,這點缺點又顯得微不足道

 

 寫到最後,忽然想到《走遍美國》裡,唱片公司製片在rebaca錄製完唱片後對她說的一句話:Don't call us,we'll call you

用這句話來形容IoC再合適不過。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.