zoukankan      html  css  js  c++  java
  • 【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进行解析。

  • 相关阅读:
    s3c2440的2440init.s的分析(转载)
    sql server错误状态列表(转载)
    vector类、迭代器、bitset类(转载)
    VC++以ADO方式连接SQL SERVER
    WinCE流设备驱动简介及GPIO驱动的实现(转载)
    .obj, .lib, .dll, .exe的关系(转载)
    利用DynamicExpression.ParseLambda实现Eval
    Matching Balanced Constructs with .NET Regular Expressions
    VB.NET and C# Comparison【转】
    ReportViewer一个简单例子
  • 原文地址:https://www.cnblogs.com/dream-to-pku/p/8663247.html
Copyright © 2011-2022 走看看