分析spring源码第二篇:XmlBeanDefinitionReader
XmlBeanFactory的实现继承了DefaultListableBeanFactory,DefaultListableBeanFactory是整个Spring的bean加载的核心部分是Spring注册和加载bean的默认实现。XmlBeanFactory与DefaultListableBeanFactory不同的地方就是XmlBeanFactory使用了XmlBeanDefinitionReader读取器,下面分析下XmlBeanDefinitionReader的结构和实现原理。
XmlBeanDefinitionReader的结构层次图和相关类图:
-
BeanDefinitionReader bena定义读取器,主要定义了读取Resource资源并转化成beanDefinition的接口。
-
EnvironmentCapable 定义获取Environment的接口。
-
AbstractBeanDefinitionReader 抽象类,实现了BeanDefinitionReader,EnvironmentCapable接口。(使用了resourceLoader资源加载器,它主要用于给定资源地址返回对应的resource的接口,文件形式: "file:","classpath:" ,"war:", "jar:" 等。)
-
XmlBeanDefinitionReader 继承了 AbstractBeanDefinitionReader。(使用了DocumentLoader和BeanDefinitionDocumentReader。DocumentLoader定义了根据resource转化成document的接口,BeanDefinitionDocumentReader 定义了根据document注册BeanDefinition的接口)
-
DefaultBeanDefinitionDocumentReader是BeanDefinitionDocumentReader的实现(使用了BeanDefinitionParserDelegate他定义了解析document的各种方法)
可以整出XmlBeanDefinitionReader读取xml的大致流程如下:
转载于:https://my.oschina.net/u/3209651/blog/1922492