美文网首页
Spring源码学习系列(二)之xml标签解析

Spring源码学习系列(二)之xml标签解析

作者: just_like_you | 来源:发表于2019-07-02 14:45 被阅读0次

上一篇说完了加载xml信息到Document对象

源码如下,接着上篇,开始registerBeanDefinitions(Document doc,Resource resource)

image.png

来到解析Document对象标签的核心逻辑

进入 doRegisterBeanDefinitions.parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate)方法

    protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate) {
        if (delegate.isDefaultNamespace(root)) {
            NodeList nl = root.getChildNodes();
            for (int i = 0; i < nl.getLength(); i++) {
                Node node = nl.item(i);
                if (node instanceof Element) {
                    Element ele = (Element) node;
                                //如果是默认的(import,beans,bean ...)名称空间则使用默认的解析方法解析
                    if (delegate.isDefaultNamespace(ele)) {
                        parseDefaultElement(ele, delegate);
                    }
                              // 解析自定义信息(<tx :annotation-dri ven/> ..)
                    else {
                        delegate.parseCustomElement(ele);
                    }
                }
            }
        }
        else {
            delegate.parseCustomElement(root);
        }
    }

其中会对默认标签(import,bean,beans ...) 进行默认的标签解析 parseDefaultElement(ele,delegate)
以及对自定义标签的解析(<Context:annotation-config /> <tx:annotation-driver /> ..),最后将得到BeanDefinition通过BeanDefinitionRegistry.registerBeanDefinition()方法将bean定义信息注册到容器中,
其中通过BeanDefinitionParserDelegate中的一系列方法将Xml中的属性解析到AbstractBeanDefinition类中

由于XML的配置方式使用越来越少,具体每个标签是如何解析的,就不继续深入。有需要的可以自行探究。

相关文章

网友评论

      本文标题:Spring源码学习系列(二)之xml标签解析

      本文链接:https://www.haomeiwen.com/subject/nodrcctx.html