IOC隨筆小記錄

對IOC的一點學習筆記


IOC (Inversion of Control):控制反轉

DI (Dependency Injection):依賴注入


1、在沒有使用IOC的情況下是如何進行的

在UserController中需要用到UserService的相關邏輯來實現對應的增刪改查功能,那麼需要在UserController中直接 new UserService();
對於一個UserService來說還好,假如我有若干個Service需要使用,每個地方都使用new來創造一個對象供自己使用?如果我每個Service都有若干種實現,那麼分別進行new?這樣太累了。

2、IOC Service Provider登場

我們需要使用一個對象,但是又不想自己動手去創造,那有沒有別人來幫我們做這些基礎工作?然後我們就集中精力關注我們要關注的業務點?
有,來幫我們做這件事情的就是IOC Service Provider。
我們需要什麼的時候,完全交給它來幫我們創建,它知道我們需要什麼。
我們缺乏什麼的時候,也可以主動找它要,它擁有我們想要的。
我們將自己創建對象的控制權交給它,我們把自己的依賴來交給它管理,這就是----控制反轉\依賴注入。

3、IOC Service Provider是什麼

IOC Service Provider是一個抽象概念,它指任何一種將IOC場景中的業務對象綁定到一起的實現方式,可以是一段程式碼,也可以是一組相關的類,或者是比較通用的IOC框架或者IOC容器實現。

而我們使用的Spring,它的IOC容器就是:

  • BeanFactory:最基礎的IOC服務支援,採用延遲初始化策略。
  • ApplicationContext:在BeanFactory的基礎上構建,相對比較高級的容器實現,還有比如事件發布、國際化支援等。可以使用及時載入,容器在啟動之後自動完成初始化綁定。

4、IOC容器到底在背後做什麼

毫無疑問,它最基本的兩個職責就是:

  • 業務對象的構建管理:負責創建系統中的一切需要的對象
  • 業務對象間的依賴綁定:將這些創建好的對象組織在一起讓它們一起好好工作

5、我們怎麼使用IOC

使用過 @Controller @Service @Resource @Autowired 這些註解吧?

Tags: