Spring第三天学习笔记
- IOC容器初始化(续)
-
- BeanDefinition的载入和解析
- BeanDefinition在IOC容器的注册
- IOC容器的依赖注入
- 容器其他相关特性的设计与实现
-
- ApplicationContext和Bean的初始化及销毁
- lazy-init属性和预实例化
- FactoryBean的实现
- BeanPostProcessor的实现
- autowiring(自动依赖装配)的实现
- Bean的依赖检查
- Bean对IOC容器的感知
- IOC容器分析小结
IOC容器初始化(续)
BeanDefinition的载入和解析
以DefaultListableBeanFactory为例,IOC容器如何载入

Spring BeanDefinition的解析是在BeanDefinitionParseParserDelegate中完成的
BeanDefinition在IOC容器的注册
注册是在DefaultListableBeanFactory中用HashMap来持有载入的BeanDefinition
注册过程
IOC容器的依赖注入
依赖注入的过程是用户第一次向IOC容器索要Bean时触发的。
注入是调用AbstractBeanFactory中的gerBean()方法
spring创建bean的方式一是通过Java的反射功能,一是通过CGLIB。
依赖注入的发生实在BeanWrapper的setPropertyValues()
容器其他相关特性的设计与实现
ApplicationContext和Bean的初始化及销毁
IOC容器中bean的生命周期
1、Bean实例的创建
2、为Bean实例设置属性
3、调用Bean的初始化方法
4、应用可以通过IOC容器使用Bean
5、当容器关闭时,调用Bean的销毁方法
lazy-init属性和预实例化
DefaultListableBeanFactory这个基本容器的preInstantiateSingletons方法中完成
FactoryBean的实现
类似于抽象工厂模式
BeanPostProcessor的实现
IOC触发对postProcessBeforeInitialization的调用
autowiring(自动依赖装配)的实现
使用反射自动查找属性的类型或者名字,基于属性的类型或者名字自动匹配IOC容器的Bean。
Bean的依赖检查
在bean定义中设置dependency-check属性来指定依赖检查模式即可;有none、simple、object、all四种模式;默认为none。
Bean对IOC容器的感知
IOC容器分析小结
1、BeanDefinition的定位
2、容器的初始化;初始化入口是refresh()函数