一、定義
IOC
:全稱是 Inversion Of Control,也就是控制反轉,它的核心思想是把對象的管理權限交給容器。應用程序如果需要使用某個對象的實例,那么直接從 IOC 容器里面去獲取就可以了。
傳統(tǒng)應用程序 vs IOC控制反轉:
這種設計的好處在于降低了對象與對象之間的耦合性,使得程序的整個體系結構變得更加靈活。
二、Bean的聲明方式
Spring 里面提供了很多方式去聲明一個 Bean,比如說在 XML 配置文件里面通過 <bean>
標簽、 @Service
注解、@Configuration
配置類中的 @Bean
注解去聲明等等。
Spring 在啟動過程中會去解析這些 Bean,然后保存到 IOC 容器里面。
三、IOC的工作流程
Spring 中 IOC 的工作流程大致可以分為三個階段:
-
IOC 容器的初始化階段: 這個階段主要是根據(jù)程序里面定義的
XML
或者注解等 Bean 的聲明方式,通過解析和加載后生成BeanDefinition
實體,然后把 BeanDefinition 注冊到 IOC 容器中。生成的 BeanDefinition 實體中會包含 Bean 的一些定義和基本屬性。最后,把這個 BeanDefinition 保存到一個 Map 集合里面,從而去完成 IOC 的初始化。
IOC 容器的作用就是對這些注冊的 Bean 的定義信息進行處理和維護,這是 IOC 容器實現(xiàn)控制反轉的核心。
-
完成 Bean 的初始化和依賴注入: 進入第二個階段以后,這個階段會做兩件事:
1)通過反射去針對沒有設置
lazy-init
屬性的單例 Bean 進行初始化;2)完成 Bean 的依賴注入。
-
Bean 的使用: 通常我們會通過
@Autowired
這樣一個注解,或者通過BeanFactory.getBean()
從 IOC 容器里面去獲取一個指定的 Bean 實例。另外,針對設置了
lazy-init
屬性以及非單例 Bean 的實例化,是在每一次獲取 Bean 對象的時候,調用 Bean 的初始化方法來完成實例化的。并且 Spring IOC 容器不會去管理這些 Bean。文章來源:http://www.zghlxwxcb.cn/news/detail-636767.html
整理完畢,完結撒花~ ??文章來源地址http://www.zghlxwxcb.cn/news/detail-636767.html
到了這里,關于Spring(13) IOC的工作流程的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!