您的位置:首页 > 编程语言 > Java开发

【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进行解析。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: