zoukankan      html  css  js  c++  java
  • 2.2 Spring的结构组成--Spring源码深度解析

    beans源码结构

      在Spring源码中,用于实现2.1中功能是org.Springframework.beans.jar,下图是beans依赖的jar包,当然spring-core是必须的。

        

      Spring 使用了N多的代码实现了2.1的功能,让我们首先尝试梳理一下Spring的框架结构,从全局的角度了解一下Spring的结构组成。

    beans 包的层次结构

      我们先看整个beans工程的源码结构

        

        beans包中的各个源码包的功能如下:

          src/main/java 用于展示Spring的主要逻辑。

          src/main/resources 用于存放系统的配置文件。

          src/test/java 用于对主要逻辑进行单元测试。

          src/test/resources 用于存放测试用的配置文件。

    核心类介绍

      DefaultListableBeanFactory

        XmlBeanFactory 继承自 DefaultListableBeanFactory ,而 DefaultListableBeanFactory 是整个bean加载的核心部分,是Spring注册及加载bean的默认实现。

        xmlBeanFactory 与 DefaultListableBeanFactory 不同的地方其实是在 XmlBeanFactory 中使用了自定义的XML读取器 XmlBeanDefinitionReader ,实现了个性化的 BeanDefinitionReader 读取。

        DefaultListableBeanFactory 继承了 AbstractAutoWriteCapableBeanFactory 并实现了 ConfigurableListableBeanFactory 以及 BeanDafinitionRegistry 接口。

        ConfigurableListableBeanFactory 的层次结构,详见 

          网址:https://github.com/myaq1314/learn-spring-beans/blob/master/src/main/java/zhi/hao/bean/DefaultListableBeanFactory.xml 

          AliasRegistry 定义对alias的简单增删改查等操作。

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

          SingletonBeanRegistry 定义对单例的注册及获取。

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

          DefaultSingletonBeanRegistry 对接口SingletonBeanRegistry各函数的实现。

          HierarchicalBeanFactory 继承BeanFactory,也就是在BeanFactory定义的功能的基础上增加了对parentFactory的支持。

          BeanDefinitionRegistry 定义对BeanDefinition的各种增删改查操作。

          FactoryBeanRegistrySupport 在DefaultSingletonRegistry基础上增加了对FactoryBean的特殊处理功能。

          ConfigurableBeanFactory 提供配置Factory的各种方法。

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

          AbstractBeanFactory 综合FactoryBeanRegistrySupport和ConfigurableBeanFactory的功能。

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

          AbstractAutoCapableBeanFactory 综合AbstractBeanFactory并对接口AutowireCapableBeanFactory进行实现。

          ConfigurableListableBeanFactory BeanFactory配置清单,指定忽略类型及接口等。

          DefaultListableBeanFactory 综合以上所有功能,主要是对Bean注册后的处理。

        XmlBeanFactory 对DefaultListableBeanFactory类进行了扩展,主要用于从XML 文档中读取BeanDefinition,对于注册及获取Bean都是使用从父类DefaultListableBeanFactory 继承的方法去实现,而唯独与父类不同的个性化实现就是增加了XmlBeanDefinitionReader类型的reader属性。在XmlBeanFactory中主要使用reader属性对资源文件进行读取和注册。

          

  • 相关阅读:
    【分享】Audio工程测试1080p yuv422 10bit编码,软件报告VCU能力不足
    VLC和Gstreamer配合
    【分享】在MPSoC ZCU106单板上运行Docker
    python之(25)中级总结(3)关系型数据库(mysql和oracle使用)
    python之(24)中级总结(2) 时间模块,json和xml模块学习总结
    Java从入门到实战之(33)Java中23种设计模式之5种创建式模式
    python之(23)中级总结(1) 正则表达式和内置函数学习总结
    python之(22)基础总结(5)
    SparkSQL构建用户画像
    Python机器学习(九十八)机器学习算法原理解析
  • 原文地址:https://www.cnblogs.com/chuzh/p/5002535.html
Copyright © 2011-2022 走看看