网站首页 > 知识剖析 正文
前言
在上篇文章“源码: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”,全部都是干货。
- 上一篇: jmeter组件介绍_jmeter各个组件
- 下一篇: 基于GPRS通信模块实现自动抄表的设计
猜你喜欢
- 2025-09-29 Python开发爬虫的常用技术架构_python网络爬虫开发
- 2025-09-29 DISMTools v0.5.1 Update 1_DISMTools v0.5.1 Update 16
- 2025-09-29 Spring MVC 完整配置指南:WebMvcConfigurer 实战全解析
- 2025-09-29 Python3 XML解析:探索数据交换与处理的高效工具(38)
- 2025-09-29 《Java核心技术·卷 Ⅱ》知识点总结
- 2025-09-29 MyBatis3源码解析-执行SQL流程_mybatis3源码深度解析
- 2025-09-29 印度计算机应急响应小组警告:谷歌Chrome、Zoho软件存在多个漏洞
- 2025-09-29 什么是OWASP Top 10?web安全必读_owsl啥意思
- 2025-09-29 XXE漏洞_Xxe漏洞支持的伪协议不包括
- 2025-09-29 Android绘制流程_android图形绘制
- 最近发表
-
- 不用Flexbox, 一行代码搞定CSS居中难题
- 使用 HTML、CSS 和 JS 创建令人惊叹的粒子背景效果
- CSS样式隔离:12个技巧让冲突率降低75%
- Python开发爬虫的常用技术架构_python网络爬虫开发
- DISMTools v0.5.1 Update 1_DISMTools v0.5.1 Update 16
- Spring MVC 完整配置指南:WebMvcConfigurer 实战全解析
- Python3 XML解析:探索数据交换与处理的高效工具(38)
- 《Java核心技术·卷 Ⅱ》知识点总结
- MyBatis3源码解析-执行SQL流程_mybatis3源码深度解析
- 印度计算机应急响应小组警告:谷歌Chrome、Zoho软件存在多个漏洞
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)