對IOC、DI的個人理解
????聽老師講完后,我能不能這樣理解呢?
????IOC:是站在對象的角度(它處于被動的地位),它需要的依賴對象不需要自身去創(chuàng)建,已經(jīng)有IOC容器創(chuàng)建好了,用的時候直接拿來用就行了。是一種集中式管理的模式。
????DI:是站在IOC容器的角度來定義的(處于一個主動的地位),會根據(jù)對象的需求動態(tài)的把這些依賴對象注入到對應的對象中。
? ??
????聽老師講完后,我能不能這樣理解呢?
????IOC:是站在對象的角度(它處于被動的地位),它需要的依賴對象不需要自身去創(chuàng)建,已經(jīng)有IOC容器創(chuàng)建好了,用的時候直接拿來用就行了。是一種集中式管理的模式。
????DI:是站在IOC容器的角度來定義的(處于一個主動的地位),會根據(jù)對象的需求動態(tài)的把這些依賴對象注入到對應的對象中。
? ??
2016-05-15
舉報
2016-05-15
IoC的一個重點是在系統(tǒng)運行中,動態(tài)的向某個對象提供它所需要的其他對象。這一點是通過DI(Dependency Injection,依賴注入)來實現(xiàn)的。比如對象A需要操作數(shù)據(jù)庫,以前我們總是要在A中自己編寫代碼來獲得一個Connection對象,有了?spring我們就只需要告訴spring,A中需要一個Connection,至于這個Connection怎么構造,何時構造,A不需要知道。在系統(tǒng)運行時,spring會在適當?shù)臅r候制造一個Connection,然后像打針一樣,注射到A當中,這樣就完成了對各個對象之間關系的控制。A需要依賴?Connection才能正常運行,而這個Connection是由spring注入到A中的,依賴注入的名字就這么來的。那么DI是如何實現(xiàn)的呢??Java 1.3之后一個重要特征是反射(reflection),它允許程序在運行的時候動態(tài)的生成對象、執(zhí)行對象的方法、改變對象的屬性,spring就是通過反射來實現(xiàn)注入的