文章目录
- 一、生命周期关键步骤
- `1.1 前置条件`
- `1.2 创建bean`
- 二、Bean生命周期、核心源码分析
- 2.1 前置条件, 源代码
- 2.2 创建bean, 源代码
一、生命周期关键步骤
1.1 前置条件
1.创建rootBean
生成RootBeanDefinition
2.对bean定义的方法,进行验证、重写
调用方法prepareMethodOverrides()
3.返回一个代理对象,用于在实例化前、或实例化后,指定插入切面逻辑
调用方法resolveBeforeInstantiation()
1.2 创建bean
1.前置条件完成后,实例化Bean
2.合并BeanDefinition的后置处理器,允许修改或合并bean的定义。
3.构建Bean单例
4.Bean实例填充属性值
方法是populateBean
5.初始化Bean
(1)设置bean的BeanName、BeanClassLoader、BeanFactory; 方法是invokeAwareMethods
(2)初始化前置处理, 方法是applyBeanPostProcessorsBeforeInitialization
(3)具体初始化, 方法是invokeInitMethods; 判断是否自定义初始化 invokeCustomInitMethod
(4)初始化后置处理, 方法是applyBeanPostProcessorsAfterInitialization
6.处理Bean的引用,或抛出循环依赖异常
7.注册bean的销毁
二、Bean生命周期、核心源码分析
源码类名是:AbstractAutowireCapableBeanFactory
创建bean入口
createBean(Class beanClass)
再调用createBean的重载方法
createBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args)
createBean
是bean创建的前置条件
再调用doCreateBean
doCreateBean(final String beanName, final RootBeanDefinition mbd, final @Nullable Object[] args)
doCreateBean
是bean创建的核心逻辑