Spring由哪些模块组成?

 Spring由哪些模块组成?

简单描述则是主要由以下几个模块组成:

Spring框架采用的是分层架构,它一系列的功能要素被分成20个模块,这些模块大体分为Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programming)、Instrumentation、Messaging和Test。

上图中,包含了Spring框架的所有模块,其中,灰色背景模块为本书中所涉及的主要模块。接下来分别对体系结构中的模块作用进行简单介绍,具体如下。

Core Container(核心容器)

Spring的核心容器是其他模块建立的基础,它主要由Beans模块、Core模块、Context模块、Context-support模块和SpEL(Spring Expression Language,Spring表达式语言)模块组成,具体介绍如下。

  1. Beans模块:这个模块是Spring框架的基础,提供了Bean的定义、创建和管理的功能。它包括了BeanFactory接口和相关的实现类,用于加载、实例化和管理Bean对象。

  2. Core模块:这个模块提供了Spring框架的核心功能,包括依赖注入(DI)和控制反转(IOC)等。它通过IOC容器管理对象的创建和依赖关系,实现了对象之间的解耦合。

  3. Context模块:这个模块建立在Core模块的基础上,提供了更高级的容器功能,如国际化、事件传播、资源加载等。它是Spring应用程序的运行环境,提供了上下文(ApplicationContext)的实现。

  4. Context-support模块:这个模块提供了与特定环境相关的上下文支持,如Web应用程序、企业级应用程序等。它包括了对Servlet、JSP、JMX等的支持,方便在不同环境下使用Spring框架。

  5. SpEL模块:这个模块提供了Spring Expression Language(SpEL),是一种强大的表达式语言。它可以在运行时对对象进行解析和操作,支持属性访问、方法调用、条件判断等,用于配置和处理Spring框架中的各种表达式。

Data Access/Integration(数据访问/集成层)

数据访问/集成层包括JDBC、ORM、OXM、JMS和Transactions模块,具体介绍如下。

  1. JDBC模块:这个模块提供了对JDBC(Java Database Connectivity)的封装和支持,简化了与关系型数据库的交互。它提供了JdbcTemplate等类,用于执行SQL语句、处理结果集等操作。

  2. ORM模块:这个模块提供了对对象关系映射(ORM)框架的支持,如Hibernate、MyBatis等。它通过封装和整合这些框架,简化了与数据库的交互,提供了更高级的持久化和查询功能。

  3. OXM模块:这个模块提供了对对象-XML映射(OXM)的支持,用于处理XML数据和对象之间的转换。它包括了对JAXB、Castor等框架的封装,方便在Spring应用中进行XML数据的读写和转换。

  4. JMS模块:这个模块提供了对Java消息服务(JMS)的支持,用于实现异步消息的发送和接收。它封装了JMS API,提供了消息的生产和消费功能,方便在Spring应用中进行消息的处理和管理。

  5. Transactions模块:这个模块提供了对事务管理的支持,用于处理数据库事务的提交和回滚。它提供了声明式事务的配置方式,可以通过注解或XML进行事务的定义和管理,简化了事务处理的过程。

Web层

Spring的Web层包括WebSocket、Servlet、Web和Portlet模块,具体介绍如下。

  1. WebSocket模块:这个模块提供了对WebSocket协议的支持,用于实现实时的双向通信。它封装了WebSocket API,提供了WebSocket消息的发送和接收功能,方便在Spring应用中进行实时通信的开发。

  2. Servlet模块:这个模块提供了对Servlet API的支持,用于处理HTTP请求和响应。它封装了Servlet API,提供了DispatcherServlet等类,用于处理请求的分发和处理,实现了基于MVC的Web开发模式。

  3. Web模块:这个模块提供了更高级的Web功能,如文件上传、国际化、验证等。它包括了MultipartResolver、LocaleResolver等类,用于处理文件上传、国际化和验证等任务,方便在Spring应用中进行Web开发。

  4. Portlet模块:这个模块提供了对Portlet API的支持,用于开发基于Portlet规范的Web应用程序。它封装了Portlet API,提供了Portlet MVC框架,方便在Spring应用中进行Portlet开发。

其他模块

Spring的其他模块还有AOP、Aspects、Instrumentation以及Test模块,具体介绍如下。

  1. AOP模块:这个模块提供了对面向切面编程(AOP)的支持,用于实现横切关注点的模块化。它通过定义切点和切面,将横切逻辑与业务逻辑分离,实现了横切关注点的重用和集中管理。

  2. Aspects模块:这个模块是在AOP模块的基础上构建的,提供了一些常用的切面实现,如事务管理、安全性、缓存等。它封装了这些切面的实现,方便在Spring应用中进行切面的配置和使用。

  3. Instrumentation模块:这个模块提供了对Java虚拟机(JVM)的仪器化支持,用于监控和管理应用程序的运行。它包括了对JVM工具接口(JVM TI)的封装,提供了对类加载、内存管理等的监控和控制功能。

  4. Test模块:这个模块提供了对Spring应用程序的测试支持,包括单元测试、集成测试等。它提供了一些测试类和注解,用于方便地编写和执行Spring应用程序的各种测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/402955.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring:IOC的详解☞Bean的实例化、Bean的生命周期

1、Bean基础配置 bean的基础配置&#xff1a; <bean id"" class""/> Bean的别名&#xff1a;name属性 Bean的作用范围&#xff1a;scope配置 使用bean的scope属性可以控制bean的创建是否为单例&#xff1a; singleton 默认为单例prototype 为非单…

ES6 (一)——ES6 简介及环境搭建

目录 简介 环境搭建 可以在 Node.js 环境中运行 ES6 webpack 入口 (entry) loader 插件 (plugins) 利用 webpack 搭建应用 gulp 如何使用&#xff1f; 简介 ES6&#xff0c; 全称 ECMAScript 6.0 &#xff0c;是 JavaScript 的下一个版本标准&#xff0c;2015.06 发版…

Python 如何创建和解析 XML 文件

XML&#xff08;可扩展标记语言&#xff09;是一种广泛使用的标记语言&#xff0c;主要用于存储和传输数据。它具有结构化、层次化的特点&#xff0c;常被用作数据交换格式。Python 提供了多种工具和库来处理 XML 文件&#xff0c;包括创建、解析和操作 XML 文档。 一、XML 简…

Ubuntu24.04使用SRS 搭建 RTMP流媒体服务器

一、简介 SRS(Simple Realtime Server)是一个简单高效的实时视频服务器&#xff0c; 是国人写的一款非常优秀的开源流媒体服务器软件&#xff0c;可用于直播/录播/视频客服等多种场景&#xff0c;其定位是运营级的互联网直播服务器集群。支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28…

手撕C++入门基础

1.C介绍 C课程包括&#xff1a;C语法、STL、高阶数据结构 C参考文档&#xff1a;Reference - C Reference C 参考手册 - cppreference.com cppreference.com C兼容之前学习的C语言 2.C的第一个程序 打印hello world #define _CRT_SECURE_NO_WARNINGS 1 // test.cpp // …

甄选系列“论软件开发过程RUP及其应用”,软考高级论文,系统架构设计师论文

论文真题 RUP(Rational Unified Process)是IBM公司的一款软件开发过程产品,它提出了一整套以UML为基础的开发准则,用以指导软件开发人员以UML为基础进行软件开发。RUP汲取了各种面向对象分析与设计方法的精华,提供了一个普遍的软件过程框架,可以适应不同的软件系统、应用…

http request-02-Ajax XHR 的替代方案-fetch 标准

http 请求系列 http request-01-XMLHttpRequest XHR 简单介绍 http request-01-XMLHttpRequest XHR 标准 Ajax 详解-01-AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;入门介绍 Ajax XHR 的替代方案-fetch Ajax XHR 的替代方案-fetch 标准 Ajax 的替代方案…

06、stm32 引脚输入

一、配置 二、代码 /* USER CODE BEGIN WHILE */while (1){/** 引脚默认上拉 高电平 按键按下 读取到低电平* */if(HAL_GPIO_ReadPin(GPIOB,KEY_Pin) GPIO_PIN_RESET ){HAL_Delay(20);if(HAL_GPIO_ReadPin(GPIOB,KEY_Pin) GPIO_PIN_RESET ){HAL_GPIO_TogglePin(GPIOC,LED_P…

【C++】智能指针详解

一、从new和delete谈起 在C中&#xff0c;可以使用new和delete关键字进行对象的创建和销毁&#xff0c;new一个对象实际上是在堆上分配内存&#xff0c;而new出来的对象也要自己用delete释放&#xff0c;从而回收内存&#xff0c;否则会造成内存的泄露。由程序员自己new来分配…

修改mf后缀的文件为zip(仅修改文件后缀,并非通过压缩解压的方式修改实际的文件)

仅修改文件后缀的python实现 1、以下代码仅简单的修改mf后缀的文件为zip&#xff0c;并非通过压缩解压的方式修改实际的文件。 2、执行后原有mf后缀的文件直接转换为zip的后缀&#xff0c;请注意备份。 &#xff08;注意&#xff1a;如果rar或者tar转成zip&#xff0c;请使用解…

机器学习/自主系统与亚当·斯密

人工智能中的机器学习和自主系统是当前科技领域的热门话题&#xff0c;它们与亚当斯密的经济学理论之间可能存在一些潜在的联系和启示。亚当斯密的经济学理论主要关注市场经济的运行和资源分配。他的核心观点是&#xff0c;通过市场机制的作用&#xff0c;个体追求自身利益的行…

前端框架(三件套)

学习网站 HTML 系列教程&#xff08;有广告&#xff09; HTML&#xff08;超文本标记语言&#xff09; | MDN (mozilla.org)&#xff08;英文不太友好&#xff09; 1.HTML5 & CSS3 1.1HTML5表格 <!DOCTYPE html> <html lang"en"> <head>…

李宏毅 机器学习与深度学习【2022版】 01

文章目录 一、基本概念二、深度学习内容总览三、预测YouTube播放量的模型1、假设一个含有未知参数的函数式2、根据Training Data定义一个 Loss3、最优化Optimization4、测试集验证模型性能5、线性模型特征维度提升6、非线性模型7、ReLU 四、深度学习概述1、Fully Connect Feedf…

边缘计算技术解决行业痛点,TSINGSEE智能分析网关V4技术特点与应用场景解析

一、行业背景 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;边缘计算硬件作为其核心组成部分&#xff0c;正逐步成为市场的新宠。这些硬件不仅提升了数据处理和分析的效率&#xff0c;还极大地降低了数据传输的延迟&#xff0c;为各行各业的智能化转型提…

Unity | 游戏开发中的优化思维

目录 ​​​​​​一、优化三板斧&#xff1a; 第1步&#xff1a;定标准 第2步&#xff1a;重数据 第3步&#xff1a;严测试 二、流程和性能的优化 1.定标准&#xff1a; 2.重数据&#xff1a; 三、交互和表现的优化 1.卡顿和延迟 2.手感硬 四、沟通和学习 ​​​​…

string模拟

本章准备对string模拟进行讲解&#xff0c;以下是string的学习网址&#xff1a; string - C Reference (cplusplus.com) string本质可以理解为储存char类型的顺序表&#xff0c;其中string的迭代器用一个char*就可以解决。所以string类成员变量如下&#xff1a; 这里用了一个命…

普通人如何抓住AI这个风口?

最强AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/ AI不仅仅是提升办公效率的利器&#xff0c;更是普通人目前最容易上手和变现的工具&#xff01;对于风口&#xff0c;大家应该都听…

使用yolov5实现目标检测简单案例(测试图片)

一、前置 测试这个案例之前需要安装一些前置的东西&#xff0c;如果已经安装的可以忽略&#xff0c;下面我给出我跟着做的一些很好的博客提供大家参考&#xff0c;因为我们主要目的还是实现yolov5的目标检测。 1、安装nvidia显卡驱动 可以参考&#xff1a;【Windows】安装NV…

Unified 阻抗控制 architecture、framework、approach

Unified 阻抗控制&#xff08;Unified Impedance Control&#xff09;作为一种控制策略&#xff0c;其architecture&#xff08;架构&#xff09;、framework&#xff08;框架&#xff09;和approach&#xff08;方法&#xff09;为&#xff1a; 一、Unified 阻抗控制 Archite…

京东数据编织

计算引擎是Hbase 中间计算结果的物化【就是存下来】 自动物化 在这里插入图片描述