领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

源码:Spring IoC三部曲之加载_spring加载原理

nixiaole 2025-09-29 09:18:39 知识剖析 2 ℃


前言

在上篇文章“源码:Spring IoC三部曲之定位”中,我们讲述了spring根据bean配置定位到资源,本文将讲解如何加载资源。

步骤一:从指定资源加载 bean 定义

方法很简单,循环遍历资源委派子类XmlBeanDefinitionReader进行加载资源。

步骤二:从指定的 XML 文件加载 bean 定义

这里业务很简单,逻辑大致如下:

  • encodedResource.getResource().getInputStream:获取 EncodedResource中要加载的资源,并转为InputStream的IO流,最终得到XML的解析源
  • doLoadBeanDefinitions:从指定的 XML 文件加载 bean 定义,这是实际加载的方法。

步骤三:实际上从指定的 XML 文件加载 bean 定义

业务逻辑大致如下:

  • doLoadDocument:将XML文件转换为DOM对象
  • registerBeanDefinitions:注册包含在给定 DOM 文档中的 bean 定义,例如beans标签、alias标签、name标签、import标签等

步骤四:使用配置的 DocumentLoader 实际加载指定的文档

这个方法默认实现类是DefaultDocumentLoader。

步骤五:使用标准的 JAXP 配置的 XML 解析器在提供的 InputSource 加载文档

业务逻辑大致如下:

  • createDocumentBuilderFactory:创建 JAXP 文档解工厂
  • createDocumentBuilder:创建一个 JAXP 文档解析器,这个 bean 定义阅读器将使用它来解析 XML 文档。可以在子类中覆盖,添加构建器的进一步初始化
  • builder.parse:将给定输入源的内容解析为 XML 文档并返回一个新的 DOM Document 对象

上面的解析过程是调用 JavaEE 标准的 JAXP 标准进行处理。至此 Spring IOC 容器根据定位的 Bean 配置信息,将其加载读入并转换成为 Document 对象过程完成。

时序图

写在最后

好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。

Tags:

最近发表
标签列表