Spring中Bean的生命周期分为4个阶段
1.实例化
2.属性复制
3.初始化
4.销毁
源码分析
进行源码分析前需要了解两个重要的接口,BeanPostProcessor与InstantiationAwareBeanPostProcessor,两者关系如下
InstantiationAwareBeanPostProcessor继承了BeanPostProcessor
两个接口中的方法如下
BeanPostProcessor
InstantiationAwareBeanPostProcessor
源码入口AbstractAutowireCapableBeanFactory.createBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args)
doCreateBean的方法如下
populateBean在属性赋值前先调用InstantiationAwareBeanPostProcessor的postProcessAfterInstantiation,再调用InstantiationAwareBeanPostProcessor的postProcessPropertyValues进行赋值
initializeBean初始化方法如下
到这里Bean的创建就完成了
容器关闭时会销毁Bean,源码入口ConfigurableApplicationContext.close()
close方法如下
doClose方法如下
destroyBeans方法如下
destroySingletons方法如下
至此,Bean的生命周期结束
调用链