spring bean 标签的解析和注册

来源:互联网 发布:selenium java client 编辑:程序博客网 时间:2024/05/19 23:14

spring bean 标签的解析和注册:

protected void processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate) {BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(ele);if (bdHolder != null) {bdHolder = delegate.decorateBeanDefinitionIfRequired(ele, bdHolder);try {// Register the final decorated instance.BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, getReaderContext().getRegistry());}catch (BeanDefinitionStoreException ex) {getReaderContext().error("Failed to register bean definition with name '" +bdHolder.getBeanName() + "'", ele, ex);}// Send registration event.getReaderContext().fireComponentRegistered(new BeanComponentDefinition(bdHolder));}}
(1)委托BeanDefinitionParserDelegate的parseBeanDefinitionElement方法进行元素解析,返回BeanDefinitionHolder类型的实例bdHolder,经过这个方法后,bdHolder已经包括含有配置文件中的id、class、name、aliias等属性了;

(2)当返回的bdHolder 不为空的情况下,若存在默认标签的子节点下还有自定义属性,还需要对自定义的标签进行解析;

(3)解析完成后,需要通过BeanDefinitionReaderUtils的registerBeanDefinition方法对解析后的bdHolder进行注册;

(4)最后发出相应事件,通知相关的监听器。

委托BeanDefinitionParserDelegate的parseBeanDefinitionElement方法进行元素解析

delegate.parseBeanDefinitionElement(ele);



阅读全文
1 0
原创粉丝点击