bean标签的解析及注册。
来源:互联网 发布:linux find 所有目录 编辑:程序博客网 时间:2024/06/04 18:59
前言:默认标签的解析是在parseDefaultElement函数中进行的,函数中主要分别对4种不同标签(import、alias、bean和beans)做了不同的处理,相关代码如下。
private void parseDefaultElement(Element ele, BeanDefinitionParserDelegate delegate) {
// 对import标签的处理
if(delegate.nodeNameEquals(ele, IMPORT_ELEMENT)) {
importBeanDefinitionResource(ele);
//对alias标签的处理
} else if (delegate.nodeNameEquals(ele, ALIAS_ELEMENT)) {
processAliasRegistration(ele);
// 对bean标签的处理
} else if(delegate.nodeNameEquals(ele, BEAN_ELEMENT)) {
processBeanDefinition(ele, delegate);
// 对beans标签的处理
} else if(delegate.nodeNameEquals(ele, NESTED_BEANS_ELEMENT)) {
doRegisterBeanDefinitions(ele);
}
}
parseDefaultElement(ele, delegate); // 对默认标签进行解析
processBeanDefinition(ele, delegate); // 对bean标签的处理
BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(ele);
bdHolder = delegate.decorateBeanDefinitionIFRequired(ele, bdHolder);
BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, getReaderContext().getRegistry());
getReaderContext().fireComponentRegistered(new BeanComponentDefinition(bdHolder));
逻辑总结如下:
1、首先委托BeanDefinitionDelegate类parseBeanDefinitionElement方法进行元素解析,返回BeanDefinitionHolder类型的实例bdHolder,经过这个方法后,bdHolder实例已经包含我们配置文件中配置的各种属性了,例如class、name、id、alias之类的属性。
2、当返回的bdHolder不为空的情况下若存在默认标签的子节点下再有自定义属性,还需要再次对自定义标签进行解析。
3、解析完成后,需要对解析后的bdHolder进行注册,同样,注册操作委托给了BeanDefinitionReaderUtils的registerBeanDefinition方法。
4、最后发出响应事件,通知相关的监听器,这个bean已经加载完成了。
- bean标签的解析及注册。
- bean标签的解析及注册(二)解析BeanDefinition
- bean标签的解析及注册(一)
- bean标签的解析及注册(三)AbstractBeanDefinition属性
- bean标签的解析及注册(四)注册解析的beanDefinition
- spring bean 标签的解析和注册
- bean标签的解析及注册(四)对alias,import,beans标签的处理
- 《Spring源码深度解析》阅读笔记5-默认标签的解析之bean标签的解析及注册
- Spring默认标签解析及注册实现
- SSM框架搭建及源码解析--spring容器Bean的注册(二)
- 在自定义标签子类获取Spring中注册的bean
- spring技术内幕4-IoC容器解析Bean定义资源并注册解析后的Bean
- 【spring源码分析】--Bean的解析与注册
- Spring源码阅读之-bean的解析与注册
- spring4.0 源码分析 bean标签的解析(三)
- 《Spring技术内幕》学习笔记4——IoC容器解析Bean定义资源并注册解析后的Bean
- Spring源码学习IOC(4):IoC容器解析Bean定义资源并注册解析后的Bean
- 《Spring技术内幕》学习笔记4——IoC容器解析Bean定义资源并注册解析后的Bean
- 程序员必须知道的快捷键总结
- Android基础(1):Intent和Activity
- CARD驱动四:CARD delay chain的解释
- node引入第三方模块npm社区内部分享的包的步骤
- poj 1088 滑雪
- bean标签的解析及注册。
- Thinking in java-26 构造函数多态
- 请求
- 深度优先遍历的8个简单小例题
- 自定义一个酷炫的提交完成按钮
- LogSec日志大数据审计平台,企业信息安全管理人员不再“躺枪”
- 如何控制用户的输入
- hihocoder1496-高维前缀和|暴力
- Java泛型