分析spring源码第二篇:XmlBeanDefinitionReader

XmlBeanFactory的实现继承了DefaultListableBeanFactory,DefaultListableBeanFactory是整个Spring的bean加载的核心部分是Spring注册和加载bean的默认实现。XmlBeanFactory与DefaultListableBeanFactory不同的地方就是XmlBeanFactory使用了XmlBeanDefinitionReader读取器,下面分析下XmlBeanDefinitionReader的结构和实现原理。

XmlBeanDefinitionReader的结构层次图和相关类图:

分析spring源码第二篇:XmlBeanDefinitionReader

分析spring源码第二篇:XmlBeanDefinitionReader

  1. BeanDefinitionReader  bena定义读取器,主要定义了读取Resource资源并转化成beanDefinition的接口。

  2. EnvironmentCapable  定义获取Environment的接口。

  3. AbstractBeanDefinitionReader 抽象类,实现了BeanDefinitionReader,EnvironmentCapable接口。(使用了resourceLoader资源加载器,它主要用于给定资源地址返回对应的resource的接口,文件形式: "file:","classpath:" ,"war:", "jar:" 等。)

  4. XmlBeanDefinitionReader 继承了 AbstractBeanDefinitionReader。(使用了DocumentLoader和BeanDefinitionDocumentReader。DocumentLoader定义了根据resource转化成document的接口,BeanDefinitionDocumentReader 定义了根据document注册BeanDefinition的接口)

  5. DefaultBeanDefinitionDocumentReader是BeanDefinitionDocumentReader的实现(使用了BeanDefinitionParserDelegate他定义了解析document的各种方法)

可以整出XmlBeanDefinitionReader读取xml的大致流程如下:

分析spring源码第二篇:XmlBeanDefinitionReader

 

转载于:https://my.oschina.net/u/3209651/blog/1922492