资讯专栏INFORMATION COLUMN

Spring解析xml理解

Amio / 729人阅读

摘要:总结从的创造,再到的创建,再到解析,到的实现。这一过程在编码中是按照顺序进行的,是不可逆的。比如中,还有其他的自动注入方法等等,需要更深入的了解。

Sprign解析xml配置使用dom4j.

第一步:获取Document
public class DocumentHelper{    
    //声明map存放节点
    private Map docs = new HashMap();
    public Document getDocument(String filePath) {
        //用HashMap先根据路径获取文档
        Document doc=this.docs.get(filePath); 
        if (doc==null) {
            //dom4j的解析得到doc
            …    
            this.docs.put(filePath, doc); //如果为空,把路径和文档放进去      
        } 
        return  this.docs.get(filePath);
    }
}
第二步:获取Element
public class ElementHelper{
    //声明map存放节点
    private Map elements=new HashMap();
    //往集合增加元素
    public void addElements(Document doc) {
        //获取document的elements节点,并且放入集合中
        …
    }
    //获取集合元素
    public Element getElement(String id) {
        return elements.get(id);
}
//获取所有的元素
Collection getElements(){…}
}
第三步:Bean的创造
public class BeanCreatorHelper{
    //空构造器
    public Object createBeanUseDefaultConstruct(String className) {
        return = Class.forName(className).newInstance();
    }
    //执行方法
    …
    //其他set方法还原等等
    …
}
第四步:applicationContext简单实现
public class ApplicationContextHelper {
    protected ElementHelper elementHelper = new ElementHelper();
    protected Map beans = new HashMap();
    //获取具体的对象实例,也是我们使用Spring框架中用的最多的一个方法
    public Object getBean(String id) {
    Object bean = this.beans.get(id);
    if (bean == null) {
        //1、获取到配置文件中的节点
        Element e = elementHelper.getElement(id);
        //2、通过bean创造器BeanCreatorHelper,通过反射机制获得对象,并且放到map集合中。
        ...
    }
    return bean;
}
总结

从Document的创造,再到Element的创建,再到解析Element,到applicationContext的实现。这一过程在编码中是按照顺序进行的,是不可逆的。真正的代码结构远比我上面提到的要复杂的很多。比如applicationContextHelper中,还有其他的自动注入方法等等,需要更深入的了解。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72776.html

相关文章

  • springMVC流程的学习和理解

    摘要:先用一个图来表示基本流程图这个网上很容易找到基本流程图用户发送请求到前端控制器前端控制器是的重要部分,位于中心,提供整个框架访问点,起到交换的作用,而且与容器集成。在配置这个监听器,启动容器时,就会默认执行它实现的方法。 先用一个图来表示基本流程图这个网上很容易找到 基本流程图 showImg(https://segmentfault.com/img/bVbfDiV?w=1340&h...

    didikee 评论0 收藏0
  • 【Dubbo源码阅读系列】之 Dubbo XML 配置加载

    摘要:在介绍自定义标签解析前,先放一张图帮助大家理解以下是如何从文件中解析并加载的。自定义标签比如的值为根据获取到的,获取对应的对象。关于和加载先后顺序的问题最后再集合一个小例子总结下吧当我们先解析了元素时,我们会遍历所有已经注册注册表中。 今天我们来谈谈 Dubbo XML 配置相关内容。关于这部分内容我打算分为以下几个部分进行介绍: Dubbo XML Spring 自定义 XML 标...

    wangshijun 评论0 收藏0
  • 学Java编程需要注意的地方

    摘要:学编程真的不是一件容易的事不管你多喜欢或是多会编程,在学习和解决问题上总会碰到障碍。熟练掌握核心内容,特别是和多线程初步具备面向对象设计和编程的能力掌握基本的优化策略。   学Java编程真的不是一件容易的事,不管你多喜欢或是多会Java编程,在学习和解决问题上总会碰到障碍。工作的时间越久就越能明白这个道理。不过这倒是一个让人进步的机会,因为你要一直不断的学习才能很好的解决你面前的难题...

    leanxi 评论0 收藏0
  • SpringMVC之源码分析--ViewResolver(四)

    摘要:概述本章继续学习另一个实现类解析器,该类的主要作用是根据同一请求的某些策略,选择对应的进行渲染。可以把理解为适配器,对不同类型进行适配。值得注意的是处理的为同一个。本系列文章是基于。实战需求目标实现后缀名或参数控制,显示不同的视图。 概述 本章继续学习ViewResolver另一个实现类ContentNegotiatingViewResolver解析器,该类的主要作用是根据同一请求的某...

    jcc 评论0 收藏0
  • 仿照 Spring 实现简单的 IOC 和 AOP - 下篇

    摘要:在上文中,我实现了一个很简单的和容器。比如,我们所熟悉的就是在这里将切面逻辑织入相关中的。初始化的工作算是结束了,此时处于就绪状态,等待外部程序的调用。其中动态代理只能代理实现了接口的对象,而动态代理则无此限制。 1. 背景 本文承接上文,来继续说说 IOC 和 AOP 的仿写。在上文中,我实现了一个很简单的 IOC 和 AOP 容器。上文实现的 IOC 和 AOP 功能很单一,且 I...

    AlexTuan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<