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