一、流程图

image.png

二、看源码

1、首先进入 refresh() 方法

如何 进入 refresh 方法,参考 5、Spring 容器和对象的创建流程

2、obtainFreshBeanFactory —> refreshBeanFactory
image.png
3、进入 第一个 loadBeanDefinitions 方法,接入进入很多个 loadBeanDefinitions
image.png
4、一直进入 loadBeanDefinitions,直至 org.springframework.beans.factory.xml.XmlBeanDefinitionReader#loadBeanDefinitions,在这个方法里面会看到 流的读取。
image.png
5、进入 doLoadBeanDefinitions 方法,会看到 流 被转化成了 Document 对象
image.png
�6、进入 registerBeanDefinitions 方法后 再进入 多个 registerBeanDefinitions 方法,最后 会看到 doRegisterBeanDefinitions 方法。
image.png
7、接着我们 进入 parseBeanDefinitions,会看到这里分类处理元素(默认和自定义)
image.png
�8、解析自定义元素,例如 componentScan元素
image.png
image.png
9、总之最终元素会被装载到 beanDefinitionMap中去
可以看
https://www.yuque.com/wangchao-volk4/fdw9ek/vf0eas#qYmnA