美文网首页
Spring的各大体系结构

Spring的各大体系结构

作者: 农民工进城 | 来源:发表于2019-09-26 12:07 被阅读0次

    提到Spring就不得不说IOC与AOP,这是Spring框架的两大特性。
    那么本章以及后续的章节将将基于 Spring 5.0.9.RELEASE持续介绍这两大特性。

    本章要点

    • IOC概念
    • Spring的各大体系结构

    1. IOC概念

    IOC,即Inversion of Control,控制反转。对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系;而不由开发者自己维护对象之间的关系。
    在说到IOC时,往往还有一个概念叫做DI,依赖注入。个人的理解IOC是通过DI来实现,通过DI的方式动态的向Spring里的Bean提供它所需要的其他Bean对象。

    2. Spring的各大体系结构

    2.1 Resource体系

    Spring中的org.springframework.core.io.Resource是对资源的抽象。它的每一个实现类都代表了一种资源的访问策略,如 WritableResource、ContextResource、UrlResource、ClassPathResource 、FileSystemResource、PathResource、ByteArrayResource、InputStreamResource 等。


    image.png
    2.2 ResourceLoader 体系

    有了资源Resource,就应该有资源加载,Spring 利用org.springframework.core.io.ResourceLoader 来进行统一资源加载,类图如下:


    image.png
    2.3 BeanFactory 体系

    org.springframework.beans.factory.BeanFactory,是一个非常纯粹的 bean 容器,它是 IoC 必备的数据结构,其中 BeanDefinition 是它的基本结构。BeanFactory 内部维护着一个BeanDefinition map ,并可根据 BeanDefinition 的描述进行 bean 的创建和管理。


    image.png
    • BeanFactory 有三个直接子类 ListableBeanFactory、HierarchicalBeanFactory 和 AutowireCapableBeanFactory 。
    • DefaultListableBeanFactory 为最终默认实现,它实现了所有接口。
    2.4 BeanDefinition 体系

    org.springframework.beans.factory.config.BeanDefinition ,用来描述 Spring 中的 Bean 对象。


    image.png
    2.5 BeanDefinitionReader 体系

    org.springframework.beans.factory.support.BeanDefinitionReader 的作用是读取 Spring 的配置文件的内容,并将其转换成 Ioc 容器内部的数据结构 :BeanDefinition 。

    image.png
    2.6 ApplicationContext 体系

    org.springframework.context.ApplicationContext ,即Spring 容器,应用的上下文,与我们应用息息相关。它继承 BeanFactory ,所以它是 BeanFactory 的扩展升级版。由于 ApplicationContext 的结构就决定了它与 BeanFactory 的不同,其主要区别有:

    • 继承 org.springframework.context.MessageSource 接口,提供国际化的标准访问策略。
    • 继承 org.springframework.context.ApplicationEventPublisher 接口,提供强大的事件机制。
    • 扩展 ResourceLoader ,可以用来加载多种 Resource ,可以灵活访问不同的资源。
    • 对 Web 应用的支持。

    由于涉及到的类比较多,只画重要部分:

    image.png

    相关文章

      网友评论

          本文标题:Spring的各大体系结构

          本文链接:https://www.haomeiwen.com/subject/zcufyctx.html