【Spring源碼深度解析學習系列】核心類介紹(一)


一、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進行解析。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM