Spring Bean 的生命周期整体流程
整体流程图

Spring 容器启动进行初始化工作
- 初始化一些类:bean 工厂、Javaconfig 读取器-BeanDefinitionReader、bean扫描器-BeanDefinitionScanner
- 使用 JavaConfig 读取器读取 JavaConfig ,封装成BeanDefinition
进入 refresh()
beanFactory 填充一些属性
- 调用:this.postProcessBeanFactory(beanFactory);
bean工厂的扩展点
- 调用:this.postProcessBeanFactory(beanFactory);
扫描bean
- 调用 this.invokeBeanFactoryPostProcessors(beanFactory);
- 使用 BeanDefinitionScanner 扫描@ComponentScan注解对应路径下的类、@Bean、@Import 注解的类,封装成BeanDefinition 并放入Map
归类 beanPostProcessor的实现类注册到Bean工厂
- 调用this.registerBeanPostProcessors(beanFactory)
- 将实现了beanPostProcessor的类,放入bean工厂
创建bean
- 调用:this.finishBeanFactoryInitialization(beanFactory);
- 判断是否需要合并bean
- 判断bean如果是beanFactory的,就调用BeanFactory的getObject() 生成想要生成的对象。
- 如果bean是非懒加载的单例bean就调用getBean生成bean - 开始bean 的创建的生命周期
销毁bean