zoukankan      html  css  js  c++  java
  • Java入门到精通——框架篇之Spring源码分析Spring两大核心类

    一、Spring核心类概述。
    Spring里面有两个最核心的类这是Spring实现最重要的部分。

    1、DefaultListableBeanFactory

           这个类位于Beans项目下的org.springframework.beans.factory.support包下。

           XmlBeanFactory(位于org.springframework.beans.factory.xml包)继承自DefaultListableBeanFactory,而DefaultListableBeanFactory是整个bean加载的核心部分,是Spring注册加载bean的默认实现,而对于XmlBeanFactory与DefaultListableBeanFactory不同的地方是XmlBeanFactory中使用了自定义的XML读取器XmlBeanDefinitionReader,实现了个性化的BeanDefinitionReader读取,DefaultListableBeanFactory继承了AbstractAutowireCapableBeanFactory并实现了ConfigurableListableBeanFactory以及BeanDefinitionRegistry接口。

    2、XmlBeanDefinitionReader
            这个类位于org.springframework.beans.factory.xml包下。
            XML配置文件的读取是Spring中重要的功能,因为Spring的大部分功能都是以配置文件作为切入点的。那么我们可以从XmlBeanDefinitionReader中树立一下资源文件读取、解析及注册的功能。

    二、两大核心类的层次结构图。

    1、DefaultListableBeanFactory


    从图中不难发现这个类如何从底层一步一步封装起来的。

    下面大致的介绍一下主要几个类的作用:

    AliasRegistry:对alias的简单增删改查

    SimpleAliasRegistry:主要使用map作为alias的缓存,并对接口AliasRegistry进行实现

    SinglegtonBeanRegistry:定义对单例的注册以及获取。

    BeanFactory:定义获取Bean及Bean的各种属性。

    DefaultSingletonBeanRegistry:对接口SinglegtonBeanRegistry的各个函数的实现。

    HiberarchicalBeanFactory:集成BeanFactory,对BeanFactory功能基础上加上了parentFactory的支持。

    BeanDefiniRegistry:定义BeanDefinition的各种增删改查操作。

    FactoryBeanRegistrySuppourt:在DefaultSingletonBeanRegistry基础上增加了对FactoryBean的特殊处理。

    CongfigurableBeanFactory:提供配置Factory的各种方法。

    ListableBeanFactory:根据各种条件获取Bean的配置清单。

    AbstractBeanFactory:综合了FactoryBeanRegistrySuppourt和CongfigurableBeanFactory的功能。

    AutowireCapableBeanFacotry:提供创建bean、自动注入、初始化以及应用bean的后处理器。

    AbstractAutowireCapableBeanFactory:综合AbstractBeanFactory并对接口AutowireCapableBeanFactory进行实现

    ConfigurableListableBeanFactory:BeanFactory配置清单,指定护绿类型及接口DefaultListableBeanFactory:综合了上面所有功能组要对Bean注册后的处理

    2.XmlBeanDefinitionReader


    从这个图我们能看出这个类用如何一步一步的封装起来的。

    下面我也简单的说一下主要几个的类有些什么功能:

    ResourceLoader:定义资源加载器,主要应用于根据给定的资源文件地址返回对应的Resource。

    BeanDefinitionRedader:主要定义资源文件读取并且转化为BeanDefinition的各个功能。

    DocumentLoder:定义从资源文件加载到转换为Document的功能。

    三、总结。

    这篇博客对这两个核心类大概的讲述了一下,下面的系列博客会详细的讲述这些类内部是如何实现的。

  • 相关阅读:
    特殊方法(双下方法)
    反射
    属性
    类方法、静态方法
    封装
    python接口类,抽象类
    Yii2基本概念之——事件(Event)
    Yii2基本概念之——行为(Behavior)
    yii2 migrate 数据库迁移的简单分享
    Yii2.0 RESTful API 之速率限制
  • 原文地址:https://www.cnblogs.com/iplus/p/4490359.html
Copyright © 2011-2022 走看看