IOC :Inversion of Control 控制反轉
DI : dependency Injection 依賴注入
咋一聽,控制反轉、依賴注入,似乎很高大上的名字,概念比較抽象,但其實慢慢分析,轉換成自己的話也不難理解:
IOC的理解:
在原始社會的時候,我們需要自己生火、自己挖井。這個時候主動權在自己手裏。隨着時代的發展我們現在有燃氣公司和水利公司。我們現在想喝水直接扭水龍頭水就流出來了,但是水這個來源的控制權交給自來水公司了,這個過程稱之爲控制反轉
對於Spring來說,以前自己創建的對象UserService service = new UserServiceImpl(),
service.xxx()
而現在,對象的創建交給Spring工廠,用的時候去工廠中獲取,
ClassPathXmlApplicationContext ac = new …;
從之前自己創建對象,到現在交給Spring工廠創建對象,包括給屬性賦值也交給Spring工廠來完成,這個由我們自己完成一些事情轉移到Spring框架完成這些事情的過程,Spring稱之爲控制反轉(IOC)
DI (依賴注入):
如果我們站在spring工廠的角度,工廠創建需要的對象,並且還可以給程序員中的類的屬性賦值,對象由工廠創建,最終由程序員使用,這就是spring的依賴注入