天天看點

Spring第三天學習筆記IOC容器初始化(續)IOC容器的依賴注入容器其他相關特性的設計與實作IOC容器分析小結

Spring第三天學習筆記

  • IOC容器初始化(續)
    • BeanDefinition的載入和解析
    • BeanDefinition在IOC容器的注冊
  • IOC容器的依賴注入
  • 容器其他相關特性的設計與實作
    • ApplicationContext和Bean的初始化及銷毀
    • lazy-init屬性和預執行個體化
    • FactoryBean的實作
    • BeanPostProcessor的實作
    • autowiring(自動依賴裝配)的實作
    • Bean的依賴檢查
    • Bean對IOC容器的感覺
  • IOC容器分析小結

IOC容器初始化(續)

BeanDefinition的載入和解析

 以DefaultListableBeanFactory為例,IOC容器如何載入

Spring第三天學習筆記IOC容器初始化(續)IOC容器的依賴注入容器其他相關特性的設計與實作IOC容器分析小結

 Spring BeanDefinition的解析是在BeanDefinitionParseParserDelegate中完成的

BeanDefinition在IOC容器的注冊

 注冊是在DefaultListableBeanFactory中用HashMap來持有載入的BeanDefinition

 注冊過程

Spring第三天學習筆記IOC容器初始化(續)IOC容器的依賴注入容器其他相關特性的設計與實作IOC容器分析小結

IOC容器的依賴注入

 依賴注入的過程是使用者第一次向IOC容器索要Bean時觸發的。

  注入是調用AbstractBeanFactory中的gerBean()方法

Spring第三天學習筆記IOC容器初始化(續)IOC容器的依賴注入容器其他相關特性的設計與實作IOC容器分析小結

spring建立bean的方式一是通過Java的反射功能,一是通過CGLIB。

依賴注入的發生實在BeanWrapper的setPropertyValues()

容器其他相關特性的設計與實作

ApplicationContext和Bean的初始化及銷毀

Spring第三天學習筆記IOC容器初始化(續)IOC容器的依賴注入容器其他相關特性的設計與實作IOC容器分析小結

 IOC容器中bean的生命周期

  1、Bean執行個體的建立

  2、為Bean執行個體設定屬性

  3、調用Bean的初始化方法

  4、應用可以通過IOC容器使用Bean

  5、當容器關閉時,調用Bean的銷毀方法

lazy-init屬性和預執行個體化

 DefaultListableBeanFactory這個基本容器的preInstantiateSingletons方法中完成

FactoryBean的實作

 類似于抽象工廠模式

BeanPostProcessor的實作

Spring第三天學習筆記IOC容器初始化(續)IOC容器的依賴注入容器其他相關特性的設計與實作IOC容器分析小結
Spring第三天學習筆記IOC容器初始化(續)IOC容器的依賴注入容器其他相關特性的設計與實作IOC容器分析小結

IOC觸發對postProcessBeforeInitialization的調用

autowiring(自動依賴裝配)的實作

 使用反射自動查找屬性的類型或者名字,基于屬性的類型或者名字自動比對IOC容器的Bean。

Bean的依賴檢查

 在bean定義中設定dependency-check屬性來指定依賴檢查模式即可;有none、simple、object、all四種模式;預設為none。

Bean對IOC容器的感覺

Spring第三天學習筆記IOC容器初始化(續)IOC容器的依賴注入容器其他相關特性的設計與實作IOC容器分析小結

IOC容器分析小結

 1、BeanDefinition的定位

 2、容器的初始化;初始化入口是refresh()函數

繼續閱讀