二.重新回炉Spring Framework:Spring Framework主要组件概览

1.写在前面的话

这里主要简单说一下Spring Framework的几个核心组件的总体情况。为了比较直观,这里使用了ClassPathXmlApplicationContext的类图来进行说明。它基本上包含了 IoC 体系中大部分的核心类和接口。类图如下图所示:
在这里插入图片描述

2.Resource 组件体系

Resource相关组件基本都在org.springframework.core.io包下,包括Resource和ResourceLoader。

2.1 Resource组件

Resource组件的类图如下:
在这里插入图片描述
它是对资源的抽象。Resource每一个实现类都代表了一种资源的访问策略,如 ClassPathResource、RLResource、FileSystemResource 等。

2.2 ResourceLoader组件

ResourceLoader主要是为了加载上面的Resource资源,类图如下:
在这里插入图片描述

3.BeanFactory 组件体系

在这里插入图片描述
BeanFactory,在org.springframework.beans.factory报下,是一个非常纯粹的 bean 容器,它是 IoC 必备的数据结构,其中 BeanDefinition 是它的基本结构。BeanFactory 内部维护着一个BeanDefinition map ,并可根据 BeanDefinition 的描述进行 bean 的创建和管理。
BeanFactory 有三个直接子类 ListableBeanFactory、HierarchicalBeanFactory 和 AutowireCapableBeanFactory 。DefaultListableBeanFactory 为最终默认实现,它实现了所有接口。

4.BeanDefinition 组件体系

BeanDefinition ,主要是用来描述 Spring Framework中的 Bean 对象。主要类图如下:
在这里插入图片描述

5.BeanDefinitionReader 组件体系

BeanDefinitionReader 的作用是读取 Spring 的配置文件的内容,并将其转换成 Ioc 容器内部的数据结构 :BeanDefinition 。它的主要类图如下:
在这里插入图片描述

6. ApplicationContext 组件体系

ApplicationContext,叫做应用上下文,与我们应用息息相关。它继承 BeanFactory ,所以它是 BeanFactory 的扩展升级版。ApplicationContext虽然继承BeanFactory ,但是它的结构与BeanFactory却大大不同。其主要区别如下:

  1. 继承 org.springframework.context.MessageSource 接口,提供国际化的标准访问策略。
  2. 继承 org.springframework.context.ApplicationEventPublisher 接口,提供强大的事件机制。
  3. 扩展 ResourceLoader ,可以用来加载多种 Resource ,可以灵活访问不同的资源。
  4. 对 Web 应用的支持。
    主要类图如下:
    在这里插入图片描述
    通过上面五个体系,我们可以看出,IoC 主要由 spring-beans 和 spring-context 项目,进行实现。

相关推荐

  1. React核心概念主要特点及组件的生命周期

    2024-02-20 01:54:01       28 阅读
  2. 音视频主要概念

    2024-02-20 01:54:01       33 阅读
  3. 第Ⅰ章-VII Typescript主要功能概览

    2024-02-20 01:54:01       34 阅读
  4. 构成CNN主要组件思想---BP

    2024-02-20 01:54:01       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-20 01:54:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-20 01:54:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-20 01:54:01       87 阅读
  4. Python语言-面向对象

    2024-02-20 01:54:01       96 阅读

热门阅读

  1. linux查看磁盘占用命令

    2024-02-20 01:54:01       45 阅读
  2. 【LeetCode每日一题】单调栈 901股票价格跨度

    2024-02-20 01:54:01       62 阅读
  3. 【Docker】dockerfile学习

    2024-02-20 01:54:01       49 阅读
  4. 备战蓝桥杯 Day6(学习动态规划)

    2024-02-20 01:54:01       52 阅读
  5. Linux——常用特殊符号介绍

    2024-02-20 01:54:01       44 阅读
  6. 深度学习优化算法

    2024-02-20 01:54:01       40 阅读
  7. 开源数据库MYSQL DBA运维实战 第二章 SQL

    2024-02-20 01:54:01       39 阅读
  8. Unity中关于群组的一些组件

    2024-02-20 01:54:01       49 阅读
  9. 【力扣每日一题】力扣590N叉树的后序遍历

    2024-02-20 01:54:01       45 阅读
  10. Oracle大型数据库技术

    2024-02-20 01:54:01       36 阅读
  11. final域的内存语义

    2024-02-20 01:54:01       47 阅读