天天看点

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()函数

继续阅读