2.2 Spring的结构组成–Spring源码深度解析

2.2 Spring的结构组成–Spring源码深度解析

beans源码结构

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

    2.2 Spring的结构组成--Spring源码深度解析

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

beans 包的层次结构

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

    2.2 Spring的结构组成--Spring源码深度解析

    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属性对资源文件进行读取和注册。

      

 

转载于:https://www.cnblogs.com/chuzh/p/5002535.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109229.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 电网101、104规约解析(Java)「建议收藏」

    电网101、104规约解析(Java)「建议收藏」国家电网101规约解析(Java)最近在研究国家电网的101与104规约,也就是DL/T634.5101-2002和DL/T634.5104-2009。因为要做一个规约解析的软件(基于Android平台的),刚开始接触的也是一头雾水,因为没有接触过这方面的知识,所以就在网上搜索各种技术帖,大神经验什么的。后来在网上找到了一个软件–IEC8705(报文翻译工具).exe,这个##可以解析一…

    2022年6月20日
    168
  • 如何安装打印机_vs2010旗舰版安装教程

    如何安装打印机_vs2010旗舰版安装教程按照默认安装vs2005sp1,往往不会成功。需要做如下设置.1.运行secpol.msc2.在左边栏,右键“软件限制策略”,新建3.双击右边栏中的强制,选择“除本地管理员以外的所有用户”如上设置后,再安装vs2005sp1即可成功安装。 …

    2022年10月6日
    5
  • 真封神2.5服务端关于不能转生问题解决办法

    真封神2.5服务端关于不能转生问题解决办法传说很久很久以前从ZFS4放出2.5的服务端以后很多人测试转生不了 因为被ZFS4个鸟人把转生的配置文件删除掉了  害的我曾经还使用反汇编改了一堆代码!伤心!现在我把这个配置文件补上给大家!已经会了的朋友不要藐视本人这里只给不会的人做下提示!更多教程请关注www.zfsyhg.com,感谢大家支持!感谢CSDN的支持!

    2022年7月24日
    10
  • typescript web_typescript文档

    typescript web_typescript文档前言上一篇我们讲到如何手动编译TypeScript,如果我们每次都要手动编译,那么这样会很累,接下来就介绍自动编译TypeScript。mac自动编译typescript在Typescript文

    2022年7月29日
    7
  • SAP WebIDE里OData service catalog的实现原理「建议收藏」

    SAP WebIDE里OData service catalog的实现原理「建议收藏」我们在SAPWebIDE里创建UI5应用时,可以从Servicecatalog里选择需要的OData服务,如下图所示:这个ag3-backend是什么意思?是我在SAPCloudPlatform的Destination标签页里维护的一个Destination:这个destination指向了一个OnpremiseABAPNetweaver系统,AG3,通过SAPCloud…

    2022年10月18日
    3
  • 用php怎样将图片gif转化为jpg

    用php怎样将图片gif转化为jpg

    2021年10月14日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号