您的位置:首页 > 编程语言 > Java开发

spring bean 标签的解析和注册

2017-06-11 21:15 393 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: