基于Xml 的IOC 容器-分配解析策略
XmlBeanDefinitionReader 类中的doLoadBeanDefinition()方法是从特定XML 文件中实际载入Bean 配置资源的方法,该方法在载入Bean 配置资源之后将其转换为Document 对象,接下来调用registerBeanDefinitions() 启动Spring IOC 容器对Bean 定义的解析过程,
registerBeanDefinitions()方法源码如下:
//按照Spring的Bean语义要求将Bean定义资源解析并转换为容器内部数据结构
public int registerBeanDefinitions(Document doc, Resource resource) throws BeanDefinitionStoreException {//得到BeanDefinitionDocumentReader来对xml格式的BeanDefinition解析BeanDefinitionDocumentReader documentReader = createBeanDefinitionDocumentReader();//获得容器中注册的Bean数量int countBefore = getRegistry().getBeanDefinitionCount();//解析过程入口,这里使用了委派模式,BeanDefinitionDocumentReader只是个接口,//具体的解析实现过程有实现类DefaultBeanDefinitionDocumentReader完成documentReader.registerBeanDefinitions(doc, createReaderContext(resource));//统计解析的Bean数量return getRegistry().getBeanDefinitionCount() - countBefore;
}
Bean 配置资源的载入解析分为以下两个过程:
首先,通过调用XML 解析器将Bean 配置信息转换得到Document 对象,但是这些Document 对象并没有按照Spring 的Bean 规则进行解析。这一步是载入的过程
其次,在完成通用的XML 解析之后,按照Spring Bean 的定义规则对Document 对象进行解析,其解析过程是在接口BeanDefinitionDocumentReader 的实现类DefaultBeanDefinitionDocumentReader 中实现。
基于Xml 的IOC 容器-分配解析策略相关推荐
- 基于Xml 的IOC 容器-分配注册策略
让我们继续跟踪程序的执行顺序,接下来我们来分析DefaultBeanDefinitionDocumentReader 对Bean 定义转换的Document 对象解析的流程中, 在其parseDefa ...
- 基于Xml 的IOC 容器-分配路径处理策略
在XmlBeanDefinitionReader 的抽象父类AbstractBeanDefinitionReader 中定义了载入过程. AbstractBeanDefinitionReader 的l ...
- 一步一步手绘Spring IOC运行时序图二(基于XML的IOC容器初始化)
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...
- 从源码深处体验Spring核心技术--基于Xml的IOC容器的初始化
IOC 容器的初始化包括 BeanDefinition 的 Resource 定位.加载和注册这三个基本的过程. 我们以ApplicationContext 为例讲解,ApplicationConte ...
- 基于Xml 的IOC 容器-将配置载入内存
BeanDefinitionDocumentReader 接口通过registerBeanDefinitions() 方法调用其实现类DefaultBeanDefinitionDocumentRead ...
- 基于Xml 的IOC 容器-向容器注册
DefaultListableBeanFactory 中使用一个HashMap 的集合对象存放IOC 容器中注册解析的BeanDefinition,向IOC 容器注册的主要源码如下: //存储注册信息 ...
- 基于Xml 的IOC 容器-载入<list>的子元素
在BeanDefinitionParserDelegate 类中的parseListElement()方法就是具体实现解析<property>元素中的<list>集合子元素,源 ...
- 基于Xml 的IOC 容器-载入<bean>元素
Bean 配置信息中的<import>和<alias>元素解析在DefaultBeanDefinitionDocumentReader 中已经完成,对Bean 配置信息中使用最 ...
- 基于Xml 的IOC 容器-准备文档对象
DocumentLoader 将Bean 配置资源转换成Document 对象的源码如下: //使用标准的JAXP将载入的Bean定义资源转换成document对象 @Override public ...
最新文章
- .net mvc mssql easyui treegrid
- Android源码分析(三):Mms模块总结(一)
- matlab泰勒图,matlab画泰勒图
- 栈应用之 括号匹配问题(Python 版)
- c++求平均值_云顶之弈S4:六射手娱乐吃鸡!人均刮痧王,每个人都是主C
- @Cacheable原理
- Apache FTPClient操作文件上传下载及公共类
- Unity预计算全局实时GI(gi params)
- oldboy_09_03day
- 动态改变eachers图表高_让你的Excel图表动起来
- git 配置origin_GitHub/Git配置与简单的使用
- 卡尔曼滤波—建立状态空间表达式
- 简单的MySql游标创建
- vue父组件变量传递子组件_Vue2.x中的父组件数据传递至子组件
- AI 科研入坑指南—中国人民大学赵鑫
- 排查黑苹果系统RTL 8125B 2.5G网卡驱动故障
- 2018-ECCV-Beyond Part Models:Person Retrieval with Refined Part Pooling论文笔记
- Python实现黑白棋人机对弈
- 电梯、签到、黑板测试用例
- ICASSP 2019----Deep Speaker Representation Using Orthogonal Decomposition and Recombination for Spea
热门文章
- HTML 中的字符实体集
- 创建一个dynamics CRM workflow (二) - Build in Workflows
- 解决子线程操作UI的方法
- docker - 启动container时出现 [warning] : ipv4 forwarding is disabled. networking will not work
- HDU 4869 Turn the pokers(思维+组合公式+快速幂)
- for遍历和foreach遍历的一个细小差别
- 指针A - 签到题(顺序三元组)
- How to sign app
- Android使用腾讯浏览服务X5内核
- Splay(区间翻转) 模板