spring源码学习(一)bean整体流程概述

bean的创建大体流程如下图(当然中间还省略的很多步骤)

 

 1、bean是放在ioc容器中的,所有首先得有一个承载bean的容器beanFactory

 

2、有了容器之后,就可以开始解析bean的定义信息,解析bean的定义信息也是在obtainFreshBeanFactory这个方法中完成的

 

   loadBeanDefinitions方法很复杂,重载方法非常多,后续仔细研究。

  解析出来的beanDefinition会放在beanFactory的容器中

  

 

3、执行beanFactoryPostprocessor,在这里可以修改bean的定义信息,动态获取的bean定义信息也是在这里完成的

 

   这里的${user.name}就是在beanFactoryPostProcessor里完成替换的

4、注册beanPostProcessor,未在图上体现出来。在bean的初始化环节执行的beanPostProcessor就是在这里完成注册的

5、初始化多播器注册监听事件,在单纯的spring中其实意义不大,主要是在springMVC以及springBoot中比较重要,后续学习到这一块再仔细研究

6、真正开始创建bean

  1)、实例化非抽象的、单例的、非懒加载的bean

 

 

 

  2)、实例化完成之后,还需要给bean填充属性

  

 

  3)、属性填充完成之后,执行aware方法

 

  4)、然后执行beanPostProcessor的before方法以及init-method和after方法。到此才算是一个完整的bean对象

  

 

 

 先属性spring的一个大体流程,后续会一点一点的学习spring源码中的每一个细节

 

 

 

 

 

 

 

  

posted @ 2022-07-05 23:54  搬砖党路过  阅读(97)  评论(0编辑  收藏  举报