当前位置: 首页 > news >正文

二.重新回炉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 项目,进行实现。
http://www.lryc.cn/news/301930.html

相关文章:

  • Open CASCADE学习|曲线向曲面投影
  • 怎样连接局域网?
  • OpenAI 发布文生视频大模型 Sora,AI 视频要变天了,视频创作重新洗牌!AGI 还远吗?
  • java基础day01
  • 读十堂极简人工智能课笔记06_自然语言处理
  • Linux文件信息,drwxr-xr-x. 2 root root 6 Jan 30 17:42 Desktop
  • 深入理解Promise:用法和面试问题解析
  • css2背景
  • KUKA库卡机器人编程语言是什么?
  • Django学习全纪录:Django视图和路由的配置,应用的创建以及注册
  • LabVIEW卫星电视接收仿真系统
  • docker修改工作目录
  • Ps:统计
  • java生成pdf
  • 鸿蒙应用/元服务开发-窗口概述
  • 引入成熟的Pytest自动化测试框架
  • 学习总结18
  • SpringMVC的执行流程
  • Vue项目启动过程全记录(node.js运行环境搭建)
  • Linux下如何配置环境变量
  • PyCharm 主题和字体 (Scheme Editor Font)
  • 二叉树相关OJ题
  • 文物保护系统守护历史岁月,成都青铜展科技闪耀
  • [计算机网络]---Http协议
  • Hexo删除主题
  • RK3399平台开发系列讲解(USB篇)U盘等存储类设备
  • 一个页面需要加载大量的图片,如何提升用户体验?
  • JRT监听-PDF-Excel-Img
  • Pulsar-架构与设计
  • LeetCode每日一题589. N-ary Tree Preorder Traversal