回顾了一下一上几节,感觉不是很清晰,同样是针对这个从文件中注入Bean到SpringBeanFactory这个过程,作了如下的流程图:

整体的流程图:

拆分xmlBeanFactory这个super()操作,主要是加载父级的beanFactory。在这个里面父级元素为null

第三步是这个的核心,loadBeanDefinition(resource)的具体流程

以上三步是大概的流程,最后一步中,读取xml是在Document类中具体完成的,但是前置的一些工作在XmlBeanDifinitionReader中完成。

doLoadDocument通过使用DocumentLoader对象来加载Document对象,但这里在使用DocumentLoader对象之前还需要做以下5个准备工作

  1. 获取DocumentLoader对象。
  2. 获取EntityResolver对象。
  3. 获取ErrorHandler对象。
  4. 获取xml验证模式。
  5. 设置xml命名空间是否敏感

下面是具体如何获取EntityResolver和Xml验证模式的流程图:

当取到Document以后,registerBeanDefinitions操作:

开始注册进入Spring容器: