美文网首页
Spring-IOC-重要类

Spring-IOC-重要类

作者: zhanglbjames | 来源:发表于2017-09-03 19:33 被阅读0次

Spring IOC的核心是BeanFactory接口的实现

1- BeanFactory的默认实现类

DefaultListableBeanFactory 是非常关键的类,因为它是BeanFactory的默认实现,继承并实现了多个类和接口,是beans包中逻辑最为复杂的类;其他比如XmlBeanFactory等都是对DefaultListtableBeanFactory的个性化拓展,通过持有自定义的XML读取器XmlBeanDefinitionReader实例,来完成进行个性化的BeanDefinition的读取。

DefaultListableBeanFactory 类图

2- 配置文件的封装类

InputStreamSource接口封装了任何能返回InputStream的类,比如File、ClassPath下的资源和ByteArray等。
Resource接口抽象了所有Spring内部使用到的底层资源:File、URL、Classpath等,并提供诸多对文件操作以及状态查询的方法功能。

Resource 接口

对于不同来源的资源文件都有相应的Resource接口的不同实现,比如FileSystemResource、ClassPathResource、InputStreamResource等。


ClassPathResource 类图

3- 配置解析类

BeanDefinitionReader 接口定义了配置文件读取的重要功能,BeanFactory通过持有此reader实例对配置进行解析。

XmlBeanDefinitionReader 实现了XML配置文件读取的重要功能

XmlBeanDefinitionReader 类图

XmlBeanFactory是通过持有很多重要的实例来完成配置文件的读取


XmlBeanFactory 含有的实例域

类中包含的实例:

  • ResourceLoader:定义资源加载器,主要解析资源文件的地址然后返回对象的对这个地址文件封装的Resource对象
  • BeanDefinitionReader:定义读取Resource对象内容并转换为BeanDefinition的各种功能
  • EnvironmentCapable:定义获取Environment对象的方法,Environment对象是对系统环境变量操作的封装
  • DocumentLoader:定义加载Resource对象,转换为Document对象的功能
  • AbstractBeanDefinitionReader:对EnvironmentCapable、BeanDefinitionReader的实现
  • BeanDefinitionDocumentReader:定义读取Document对象,并注册BeanDefinition的功能
  • BeanDefinitionParseDelegate:定义解析Element的各种方法

XMLBeanDefinitionReader 解析加载的过程大致分为以下三个步骤:

  1. 通过继承AbstractBeanDefinitionReader中的方法,来使用ResourceLoader将资源文件路径转换为对应的Resource对象
  2. 通过持有DocumentLoader实例对Resource文件进行转换,将Resource文件转换为Document文件
  3. 通过获取实现了接口BeanDefinitionDocumentReader的DefaultBeanDefinitionDocumentReader类对Document进行解析,DefaultBeanDefinitionDocumentReader类中使用BeanDefinitionParserDelegate对Element进行解析。

注:Spring系列源码分析中的Spring版本为4.2.8release

相关文章

  • Spring-IOC-重要类

    Spring IOC的核心是BeanFactory接口的实现 1- BeanFactory的默认实现类 Defau...

  • Spring源码解析(八)-创建单例bean

    Spring版本 5.2.5.RELEASE 参考 Spring-IOC-容器源码分析-创建单例-bean 源码解...

  • 2018-07-16(周一)

    http://www.coolblog.xyz/2018/05/30/Spring-IOC-%E5%AE%B9%E...

  • Spring-ioc-配置

    创建对象的方式 本质就是调用对象的构造函数,不指定为调用无参构造函数 通过参数下标构造 通过参数名称构造 通过参数...

  • Spring-ioc-构造器注入

    DAO接口 IInjectionDao Service接口 IInjectionService 实现类 DAO I...

  • Spring-ioc-设值注入

    DAO接口 IInjectionDao Service接口 IInjectionService 实现类 DAO I...

  • 要事第一

    经过学习,我们终于明白了面对日常需处理的四类事务(Ⅰ类,重要且紧急;Ⅱ类,重要不紧急;Ⅲ类,紧急不重要;Ⅳ...

  • 要是第一

    在时间管理矩阵中,我们发现日常需处理的事务可分为四类: Ⅰ类,重要且紧急; Ⅱ类,重要不紧急; Ⅲ类,紧急不重要;...

  • Flink 常用的配置及配置类

    Flink重要配置: Flink重要的配置类 配置类说明备注ResourceManagerOptions.java...

  • 服务暴露

    重要类 dubbo的 ServiceBean 类实现了两个重要接口 InitializingBean, Appli...

网友评论

      本文标题:Spring-IOC-重要类

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