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

news2025/1/22 17:45:35

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.coloradmin.cn/o/1454745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目管理软件品牌榜:行业领导者与热门选择

大数据、人工智能等新兴技术的崛起,各种行业在数字化转型的过程中,越来越注重有效的项目管理和协作方式。而各种项目管理软件应运而生,以帮助企业提高效率、降低成本、提高协作性。然而在众多的项目管理软件市场上,如何选择适合自…

PCIe TX端电容

一、问题:PCIe为什么要加电容 PCIe为什么要加电容?具体的作用是什么? 答:因为PCIe Host和Receiver两端的直流偏置会不一样,所以需要在PCIe的传输路径上加电容,这样传输路径上只有AC信号,不存在…

小白如何学鸿蒙开发?

在互联网技术不断发展的现在,鸿蒙操作系统的出现标志着是能技术领域的一次重大突破,鸿蒙作为华为推出的一代操作系统,鸿蒙不仅达代表了自主创新的力量,还因为独特的分布式架构和全场景适配能力而备受关注。随着鸿蒙生态的不断完善…

机器学习 | 实现图像加密解密与数字水印处理

目录 实现窗口可视化 数字图像加密 窗口布局设置 基于混沌Logistic的图像加密 基于三重DES的图像加密 数字图像解密 窗口布局设置 基于混沌Logistic的图像解密 基于三重DES的图像解密 基于LSB的数字水印提取 窗口布局设置 水印的嵌入与提取 实现窗口可视化 这里…

【C++】类与对象【定义、访问限定符、this指针】

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:http://t.csdnimg.cn/eCa5z 目录 面向过程和面向对象初步认识 类的引入 类的定义 成员变量命名规则的建议: 类的访问限定符及…

代码随想录刷题笔记 DAY 29 | 非递减子序列 No.491 | 全排列 No.46 | 全排列 II No. 47

文章目录 Day 2901. 非递减子序列(No. 491)1.1 题目1.2 笔记1.3 代码 02. 全排列(No. 46)2.1 题目2.2 笔记2.3 代码 03. 全排列 II(No. 47)3.1 题目3.2 笔记3.3 代码 Day 29 01. 非递减子序列(…

Spring Boot打war包部署到Tomcat,访问页面404 !!!

水善利万物而不争,处众人之所恶,故几于道💦 文章目录 Spring Boot打war包部署到Tomcat,访问页面404 !!!解决办法:检查Tomcat版本和Jdk的对应关系,我的Tomcat是6.x&#x…

C语言系列-预定义符号#define定义宏#define定义宏

🌈个人主页: 会编辑的果子君 💫个人格言:“成为自己未来的主人~” 目录 预定义符号 #define定义常量 #define定义宏 预定义符号 C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的。 __FILE__ /…

渗透测试练习题解析 4(CTF web)

1、[GXYCTF2019]禁止套娃 1 考点:git 泄露 进入靶场后只有一串文字,源代码、抓包之类的都没有敏感信息出现,直接用 kali 的 dirsearch 扫描 发现存在 .git 目录,猜测应该是源码泄露,使用 GitHack 扒一下源码&#xff0…

第13章 网络 Page747~749 asio核心类 ip::tcp::resolver

3, ip::tcp::resolver 如果新浪的IP地址变了,该怎么办呢? ip::tcp::resolver 可以帮我们用上www.sina.com.cn,因为它负责将人类可读的多种网址信息,一步 到位地解析成ip::tcp::socket建立连接所需要的ip::tcp::endpoint结构&…

【FastAPI】P1 安装与第一个 FastAPI 应用

目录 FastAPI 安装第一个 FastAPI 应用代码拆解分析 FastAPI 安装 FastAPI 是用于快速构建 API 的 web 框架,依赖 Python 3.8 及更高版本。使用 pip 命令安装 fastapi: pip install fastapi安装异步处理 ASGI 的服务器 Uvicorn: pip insta…

pipx — 在隔离环境中安装和运行 Python 应用程序

pipx官网: https://pipx.pypa.io/stable/ pipx pipx 是一个用于安装和运行Python应用程序的工具,它类似于 Linux的 apt 和JavaScript 的 npx 。 pipx和pip的区别: pip是一个通用的python包安装工具pipx专注于安装python cli程序 cli&#…

Web 扫描神器:WhatWeb 保姆级教程(附链接)

一、介绍 WhatWeb 是一款用于识别网站技术栈和特征的开源Web扫描工具。它可以自动分析网站的响应并识别出使用的Web框架、CMS、服务器、JavaScript库等技术组件。WhatWeb的目标是通过分析网站的内容,提供有关目标的技术信息,这对于安全测试、漏洞评估和…

移动云云桌面应用场景广泛,助力行政、教育等领域的办公转型

当今办公场景,远程办公和视频会议逐渐常态化,但是在实际应用过程中都需要PC设备的支持,当然还有很多其他的场景也是如此。为了满足使用要求,我们走到哪里就需要把设备带到哪里,非常不方便。那么,有没有一种…

javaSpringbootmysql大学生综合素质测评系统65290-计算机毕业设计项目选题推荐(附源码)

摘 要 本论文主要论述了如何使用java语言开发一个Springboot大学生综合素质测评系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。本文将论述大学生综合素质测评系统的当前背景以及系统开发的…

代码随想录算法训练营第54天 | 123.买卖股票的最佳时机III + 188.买卖股票的最佳时机IV

今日任务 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV 123.买卖股票的最佳时机III - Hard 题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。…

【详解】图的概念和存储结构(邻接矩阵,邻接表)

目录 图的基本概念: 图的存储结构 邻接矩阵(GraphByMatrix): 基本参数: 初始化: 获取顶点元素在其数组中的下标 : 添加边和权重: 获取顶点的度: 打印图&#xf…

前端vue金额用逗号分隔

实现效果 代码 template部分 <el-input v-model"state.val"></el-input><div>{{ priceFor(state.val) }}</div> js部分 const state reactive({ val: });const priceFor (val)> {if(!val){return }else if(val.length<4){return…

LDM:High-Resolution Image Synthesis with Latent Diffusion Models

LDM: High-Resolution Image Synthesis with Latent Diffusion Models TL; DR&#xff1a;关键的技术点有两个。一是通过感知压缩将 Diffusion 从像素空间的转换到隐空间来做&#xff0c;降低训练/采样的算力成本&#xff0c;提高生成质量。二是通过交叉注意力&#xff0c;将各…

统计平台项目总体架构设计方案

1 总体规划 1.1 设计原则 按照本项目的建设目标,结合本项目具有涉及范围广、建设规模大、数据构成复杂等特点,在设计阶段需遵循一些重要原则,以保障后续建设的顺利衔接和有效执行。 1、规范性 系统设计开发遵循通用的国际规范及各系统间接口标准,保障中台基础信息数据库…