Spring笔记02-Spring容器

来源:互联网 发布:盘点2016年网络流行语 编辑:程序博客网 时间:2024/06/05 16:26

  Spring容器要干的活是解析Bean的配置文件和注解,然后实例化Bean。

  要做解析的工作,就需要一个Reader;要做实例化的工作,就需要一个BeanFactory。

  先讲解析Bean的配置文件。配置文件可以是文件、URL资源、InputStream资源等,Spirng把这些配置文件封装为Resource,然后从这个Resource实例读取输入流,通过输入流构建InputSource(注意InputSource这个类并不是来自Spring,它的的全名是org.xml.sax.InputSource,就是我们常用来解析xml文件的那个)。有了Resource实例和InputSource实例就可以调用doLoadBeanDefinitons(inputsource,resource)了,这个函数是解析的核心。那为什么有了InputSource实例,我们还要用Resource实例?后面马上讲到。

  doLoadBeanDefinitons函数做了三件事:

    (1).获取对XML文件的验证模式

    (2).加载XML文件,得到对应的Document

    (3).根据返回的Document注册Bean信息

  验证XML文件是为了保证它的正确性,验证模式主要有DTD和XSD。怎么判断XML文件使用的是哪种验证模式,这里就回答了第一个问题,Spring通过resource.getInputStream(),然后new BufferReader(new InputStreamReader(inputStream)),通过这个BufferReader实例一行一行的读原文件,如果当前行否包含了‘DOCTYPE’,那验证模式就是DTD,否则就是XSD。

  用sax获得XML文件对应的Document实例,这里和我们平时使用sax的方式一样。

  然后通过Document实例doc.getDocumentElement()获得根root,调用函数doRegisterBeanDefinitons(root),函数doRegisterBeanDefinitons(root)再调用parseBeanDefinitions(root,this.delegate),这里就出现了两种情况:

    (1).解析默认标签

    (2).解析自定义标签


2017-07-26更新

  

  

原创粉丝点击