springboot解析xml文件_Spring 源码第二弹!XML 文件解析流程

本文深入探讨Spring Boot中XML文件的解析过程,从XmlBeanDefinitionReader开始,讲解了DocumentLoader如何将Resource转换为Document,以及BeanDefinitionDocumentReader如何解析Document生成BeanDefinition。通过详细步骤分析,帮助理解Spring配置文件的加载和解析机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程

Spring 源码继续开整!

上篇文章中,松哥和大家分享了 Spring 中配置文件的加载方式,如果小伙伴们还没看过,一定先看一下,这有助于更好的理解本文,传送门:Spring 源码第一篇开整!配置文件是怎么加载的?。

上篇文章和大家分享了 Spring 中是如何加载本地配置文件的,如何将加载到的本地配置文件通过一个 InputStream 返回。了解到这一点之后,接下来就是对 InputStream 的解析了。

本文我们就来看一下整个解析流程是什么样子的。

1.XmlBeanDefinitionReader

在上篇文章中,小伙伴们可以看到,XmlBeanFactory 中加载 XML 文件流的对象是 XmlBeanDefinitionReader,因此关于 XML 的解析我们就从 XmlBeanDefinitionReader 开始讲起。

先来看一张 XmlBeanDefinitionReader 的继承关系图:

25c7da1d10e288af74be3496f0b88765.png

这张继承关系图中涉及到了几个接口,我这里和大家说一下:

  1. BeanDefinitionReader:这个接口主要定义了资源文件的读取并将资源转为 BeanDefinition。
  2. EnvironmentCapable:这个接口定义了获取 Environment 的方法。
  3. AbstractBeanDefinitionReader:实现了 BeanDefinitionReader 和 EnvironmentCapable 接口中所定义的方法。同时,AbstractBeanDefinitionReader 中多了一个比较关键的属性叫做 ResourceLoader,ResourceLoader 可以根据给定的资源返回对应的 Resource。
  4. XmlBeanDefinitionReader 则在 AbstractBeanDefinitionReader 的基础上继续扩展了它的功能。

这是 XmlBeanDefinitionReader 的继承关系。

打开 XmlBeanDefinitionReader 的源码,我们发现还有两个关键的对象:

  • BeanDefinitionDocumentReader:BeanDefinitionDocumentReader 接口只有一个实现类就是 DefaultBeanDefinitionDocumentReader ,在这里定义了对 Document 对象的读取并将读取到的属性转为 BeanDefinition。
  • DocumentLoader:将资源文件转为 Document 对象。

担心有的小伙伴可能不知道 Document 是啥,我这里再稍微说两句。Document 就是 XML 解析时获取到的文档对象,Document

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值