IOC隨筆小記錄

小白先生哦發表於2021-05-19

對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 這些註解吧?

相關文章