【Spring源码深度解析学习系列】核心类介绍(一)
2018-03-28 12:59
323 查看
一、DefaultListableBeanFactory
首先看一下结构由图可知XmlBeanFactory继承自DefaultListableBeanFactory,而DefaultListableBeanFactory是整个bean加载的核心部分,是Spring注册及加载bean的默认实现,而对于XmlBeanFactory与DefaultListableBeanFactory不同的地方其实是在XmlBeanFactory中使用了自定义的XML读取器,实现了个性化读取BeanDefinitionReader读取。
类中方法
@Deprecated @SuppressWarnings({"serial", "all"}) public class XmlBeanFactory extends DefaultListableBeanFactory { private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this); /** * Create a new XmlBeanFactory with the given resource, * which must be parsable using DOM. * @param resource XML resource to load bean definitions from * @throws BeansException in case of loading or parsing errors */ public XmlBeanFactory(Resource resource) throws BeansException { this(resource, null); } /** * Create a new XmlBeanFactory with the given input stream, * which must be parsable using DOM. * @param resource XML resource to load bean definitions from * @param parentBeanFactory parent bean factory * @throws BeansException in case of loading or parsing errors */ public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException { super(parentBeanFactory); this.reader.loadBeanDefinitions(resource); } }
DefaultListableBeanFactory继承了AbstraceAutowireCapableBeanFactory并实现了ConfigurableListableBeanFctory以及BeanDefinitionRegistry接口。
public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFactory implements ConfigurableListableBeanFactory, BeanDefinitionRegistry, Serializable
二、XmlBeanDefinitionReader
XML配置文件的读取是Spring中重要的功能,因为Spring的大部分功能都是以配置作为切入点的。ResourceLoader:定义资源加载器,主要应用于根据给定的资源文件地址返回对应的Resource.
BeanDefinitionReader:主要定义资源文件读取并转换为BeanDefinition的各个功能
EnviromentCapable:定义从资源文件加载到转换为Document的功能
AbstractBeanDefinitionReader:对EnviromentCapable、BeanDefinitionReader类定义的功能进行实现
BeanDefinitionDocumentReader:定义读取Document并注册BeanDefinition功能
BeanDefinitionParseDelegate:定义解析Element的各种方法。
1、通过继承自AbstractBeanDefinitionReader中的方法,来使用ResourceLoader将资源文件路径转换为对应的Resource文件
2、通过DocumentLoader对Resource文件进行转换,将Resource文件转换为Document文件
3、通过实现接口BeanDefinitionDocumentReader的DefaultBeanDefinitionDocumentReader类对Document进行解析,并使用BeanDefinitionParserDelegate对Element进行解析。
相关文章推荐
- SSM框架系列学习总结8之SpringMVC核心组件介绍
- NIO学习系列:核心概念及基本读写
- 大数据学习系列(1)-- linux之文件系统结构介绍
- Ext学习-基础概念,核心思想介绍
- python学习系列之OS模块介绍
- 深度学习与计算机视觉系列(1)_基础介绍
- STL学习系列之一——标准模板库STL介绍
- Linq系列学习(一)介绍
- Cortex系列ARM核心及体系结构介绍
- 深度学习与计算机视觉系列(1)_基础介绍
- 深度学习与计算机视觉系列(1)_基础介绍
- STL学习系列之一——标准模板库STL介绍
- .net reactor 学习系列(一)---.net reactor介绍
- 佛爷芸: 机器学习算法原理总结系列---算法基础之(1)机器学习介绍
- STL学习系列之一——标准模板库STL介绍
- Provisioning Services 7.8 入门系列教程之一 部署学习环境介绍
- STL学习系列之一——标准模板库STL介绍
- [置顶] 【TX1学习与开发系列】介绍与刷机安装、配置(一)
- Elasticsearch学习系列之介绍安装
- 学习笔记☞ python 基础(python3)【一】(python相关介绍,核心数据类型(数字),赋值语句,算数运算符优先级)