[摘]spring-IoC與DI
摘自: http://blog.sina.com.cn/s/blog_4c09cde7010007va.html
IoC與DI
IoC(Inversion of Control,控制倒轉)。這是spring的核心,貫穿始終。所謂IoC,對於 spring框架來說,就是由spring來負責控制物件的生命週期和物件間的關係。
IoC(Inversion of Control,控制倒轉)。這是spring的核心,貫穿始終。所謂IoC,對於 spring框架來說,就是由spring來負責控制物件的生命週期和物件間的關係。
這是什麼意思呢,舉個簡單的例子,我們是如何找女朋友的?常見的情況是,我們到處去看哪裡有長得漂亮身材又好的mm,然後打聽她們的興趣愛好、qq號、電話號、ip號、iq號………,想辦法認識她們,投其所好送其所要,然後嘿嘿……這個過程是複雜深奧的,我們必須自己設計和麵對每個環節。傳統的程式開發也是如此,在一個物件中,如果要使用另外的物件,就必須得到它(自己 new一個,或者從JNDI中查詢一個),使用完之後還要將物件銷燬(比如Connection等),物件始終會和其他的介面或類藕合起來。
那麼IoC是如何做的呢?有點像通過婚介找女朋友,在我和女朋友之間引入了一個第三者:婚姻介紹所。婚介管理了很多男男女女的資料,我可以向婚介提出一個列表,告訴它我想找個什麼樣的女朋友,比如長得像李嘉欣,身材像林熙雷,唱歌像周杰倫,速度像卡洛斯,技術像齊達內之類的,然後婚介就會按照我們的要求,提供一個mm,我們只需要去和她談戀愛、結婚就行了。簡單明瞭,如果婚介給我們的人選不符合要求,我們就會丟擲異常。整個過程不再由我自己控制,而是有婚介這樣一個類似容器的機構來控制。Spring所倡導的開發方式就是如此,所有的類都會在spring容器中登記,告訴spring你是個什麼東西,你需要什麼東西,然後spring會在系統執行到適當的時候,把你要的東西主動給你,同時也把你交給其他需要你的東西。所有的類的建立、銷燬都由 spring來控制,也就是說控制物件生存週期的不再是引用它的物件,而是spring。對於某個具體的物件而言,以前是它控制其他物件,現在是所有物件都被spring控制,所以這叫控制反轉。如果你還不明白的話,我決定放棄。
那麼IoC是如何做的呢?有點像通過婚介找女朋友,在我和女朋友之間引入了一個第三者:婚姻介紹所。婚介管理了很多男男女女的資料,我可以向婚介提出一個列表,告訴它我想找個什麼樣的女朋友,比如長得像李嘉欣,身材像林熙雷,唱歌像周杰倫,速度像卡洛斯,技術像齊達內之類的,然後婚介就會按照我們的要求,提供一個mm,我們只需要去和她談戀愛、結婚就行了。簡單明瞭,如果婚介給我們的人選不符合要求,我們就會丟擲異常。整個過程不再由我自己控制,而是有婚介這樣一個類似容器的機構來控制。Spring所倡導的開發方式就是如此,所有的類都會在spring容器中登記,告訴spring你是個什麼東西,你需要什麼東西,然後spring會在系統執行到適當的時候,把你要的東西主動給你,同時也把你交給其他需要你的東西。所有的類的建立、銷燬都由 spring來控制,也就是說控制物件生存週期的不再是引用它的物件,而是spring。對於某個具體的物件而言,以前是它控制其他物件,現在是所有物件都被spring控制,所以這叫控制反轉。如果你還不明白的話,我決定放棄。
IoC的一個重點是在系統執行中,動態的向某個物件提供它所需要的其他物件。
這一點是通過DI(Dependency Injection,依賴注入)來實現的。
它允許程式在執行的時候動態的生成物件、執行物件的方法、改變物件的屬性.
這一點是通過DI(Dependency Injection,依賴注入)來實現的。
它允許程式在執行的時候動態的生成物件、執行物件的方法、改變物件的屬性.
比如物件A需要運算元據庫,以前我們總是要在A中自己編寫程式碼來獲得一個Connection物件,有了spring我們就只需要告訴spring,A中需要一個Connection,至於這個Connection怎麼構造,何時構造,A不需要知道。在系統執行時,spring會在適當的時候製造一個Connection,然後像打針一樣,注射到A當中,這樣就完成了對各個物件之間關係的控制。A需要依賴Connection才能正常執行,而這個Connection是由spring注入到 A中的,依賴注入的名字就這麼來的。那麼DI是如何實現的呢?Java 1.3之後一個重要特徵是反射(reflection),它允許程式在執行的時候動態的生成物件、執行物件的方法、改變物件的屬性,spring就是通過反射來實現注入的。關於反射的相關資料請查閱javadoc。
理解了IoC和DI的概念後,一切都將變得簡單明瞭,剩下的工作只是在spring的框架中堆積木而已。
相關文章
- JAVA IOC 與 DIJava
- Spring-IOCSpring
- IOC與DI總結
- 就是要你懂Spring-IOCSpring
- Spring-IOC原始碼淺析Spring原始碼
- spring-ioc一學就會Spring
- 依賴倒置(DIP)與依賴注入(DI)依賴注入
- 控制反轉(IoC)與依賴注入(DI)依賴注入
- Java:控制反轉(IoC)與依賴注入(DI)Java依賴注入
- 談談對IOC及DI的理解與思考
- 控制反轉與依賴注入(IOC和DI)依賴注入
- 轉摘_儲存型別與連線方式型別
- 摘果果
- 8.(轉)控制反轉(IoC)與依賴注入(DI)依賴注入
- DIP、IoC、DI、JSJS
- Spring-DISpring
- 六-Docker DI、CDDocker
- <摘錄>位元組對齊與結構體大小結構體
- 【書摘】黑客與畫家——設計者的品味黑客
- vnc配置--摘VNC
- 陶陶摘蘋果蘋果
- 理解Spring中依賴注入(DI)與控制反轉(IoC)Spring依賴注入
- DI 原理解析 並實現一個簡易版 DI 容器
- 《計算機與電腦科學》摘錄筆記計算機筆記
- oracle sql tuning_in與exists的區別_轉摘OracleSQL
- Spring(IOC&DI)Spring
- 深入理解 IoC、DI
- di php容器的建立PHP
- 【Spring】IOC&DISpring
- spring-IOC容器原始碼分析(二)BeanDefinition註冊流程Spring原始碼Bean
- 淺談ASP.NET Core中IOC與DI的理解和使用ASP.NET
- 控制反轉(IOC)與依賴注入(DI)模式解析及實踐依賴注入模式
- 《黑客英雄》書摘黑客
- 【摘錄】index(一)Index
- [摘]JDBC筆記JDBC筆記
- markdown使用摘記
- spring IOC/DI筆記Spring筆記
- Spring 依賴注入 DISpring依賴注入