十一:java web(3)-- Spring框架 -- Spring简介

目录

1. Servlet 与 Spring 的关系

2. Spring 框架介绍

Spring 框架的起源与发展

Spring 框架的核心特性

Spring 主要模块介绍

核心模块(Core Container)

数据访问与集成模块(Data Access/Integration)

Web 模块(Web)

AOP 模块(Aspect Oriented Programming)

测试模块(Test)

Spring 框架的优势与应用场景 


  •  从现在开始 都是工作中用的东西了

1. Servlet 与 Spring 的关系

Servlet 是 Spring MVC 的基础:Spring MVC 是构建在 Servlet 之上的一个 Web 框架,它使用了 Servlet 来处理 HTTP 请求。Spring MVC 中的 DispatcherServlet 本质上是一个 Servlet,它拦截所有请求,然后根据配置和注解,分发到不同的控制器(Controller)。

简化 Servlet 开发:Spring 提供了对 Servlet 的高层封装,使开发者可以专注于业务逻辑,而不用处理 Servlet API 级别的细节。Spring MVC 提供了注解式的请求映射和依赖注入等功能,极大地简化了 Web 应用的开发流程。

统一管理 Bean:Spring 通过 IOC 容器统一管理 Bean,包括 Servlet 和其他组件,简化了应用配置,增加了可扩展性。

2. Spring 框架介绍

  1. Spring 框架的起源与发展

    Spring 框架由 Rod Johnson 在 2002 年首次发布,起初是为了解决 Java EE 企业开发中的复杂性问题。Rod Johnson 在其书《Expert One-on-One J2EE Design and Development》中提出了简化 Java 企业级开发的理念,并提供了开源框架 Spring 的早期版本。Spring 的发布为开发者带来了轻量级的替代方案,使企业级 Java 开发更具模块化和灵活性。

    随着时间的推移,Spring 不断增加新特性和模块,支持更广泛的企业级应用需求。从早期的 IOC(控制反转)和 AOP(面向切面编程)到后来的 Spring MVC、Spring Data、Spring Security 等模块,Spring 成为一个强大的 Java 企业应用开发框架。后来,Spring Boot 和 Spring Cloud 的发布更进一步推动了 Spring 的流行,特别是在微服务架构和云原生应用开发中,Spring 成为主流选择。

    1. 一定要把 Servlet 当作基础概念来学习,而不必直接用它实现具体方案,因为它已逐渐被更高层的框架所取代。

  2. Spring 框架的核心特性

    1. IOC(控制反转):通过依赖注入(DI),Spring 管理对象的依赖关系,使对象之间解耦,从而更易于测试和扩展。

    2. AOP(面向切面编程):Spring 支持 AOP,可以将日志、事务等横切关注点与业务逻辑分离,提升代码的可维护性。

    3. 事务管理:Spring 提供声明式事务管理,无需手动编写事务代码,也支持复杂的分布式事务管理。

    4. 丰富的模块化设计:Spring 包含多个功能模块(如 Spring MVC、Spring Data、Spring Security 等),能够满足各类企业应用开发需求。

    5. 高可扩展性和集成性:Spring 可以与多种数据访问技术、消息中间件、Web 服务和其他框架(如 Hibernate、MyBatis)集成。

    6. 轻量级和非侵入性:Spring 对 Java 类无特殊要求,几乎不会干扰应用原有代码结构,因此迁移和升级相对容易。

  3. Spring 主要模块介绍

    • Spring 框架包含多个模块,开发者可以根据需求选择性地使用。

    • 核心模块(Core Container)
      • 核心容器模块是 Spring 的基础,包含支持依赖注入(DI)和控制反转(IOC)的功能。

      • Spring Core:提供依赖注入机制,核心类如 BeanFactoryApplicationContext

      • Spring Context:基于 Spring Core 提供了更高级的 IOC 容器功能,例如国际化、事件传播、资源管理等。

      • Spring Expression Language(SpEL):允许在 XML 配置或注解中使用表达式,对运行时值进行操作。

    • 数据访问与集成模块(Data Access/Integration)
      • JDBC:简化了 Java 数据库连接的编程,提供 JdbcTemplate 等工具类处理数据操作。

      • ORM:支持与 ORM 框架的集成(如 Hibernate、JPA、MyBatis),提供事务管理和一致的编程接口。

      • 事务管理:提供声明式事务和编程式事务管理,简化分布式和单体事务处理。

      • 消息传递(Messaging):支持 JMS、AMQP(如 RabbitMQ)等消息传递技术,用于系统内部和系统间消息交互。

    • Web 模块(Web)
      • ​​​​​​​Spring Web 模块专注于构建 Web 应用,特别是基于 Servlet 的应用。

      • Spring MVC:提供一个强大的 MVC 框架,使用 DispatcherServlet 处理请求,通过注解配置控制器、视图和模型绑定。

      • WebSocket:支持 WebSocket 通信,用于实时 Web 应用开发。

    • AOP 模块(Aspect Oriented Programming)
      • ​​​​​​​​​​​​​​Spring 的 AOP 模块使开发者可以把日志记录、事务管理等横切关注点从业务逻辑中分离出来。

      • AOP 支持:支持声明式 AOP,通过注解和 XML 配置定义切入点和通知。

      • AspectJ 集成:支持使用 AspectJ 编写 AOP 切面,AspectJ 是 Java 中功能丰富的 AOP 框架。

    • 测试模块(Test)
      • ​​​​​​​​​​​​​​Spring Test 模块提供了丰富的测试支持,便于开发者对 Spring 应用进行单元测试和集成测试。

      • 单元测试支持:支持通过 @ContextConfiguration 加载 Spring 配置,简化基于 Spring 的单元测试。

      • Mock 测试工具:提供 MockMvc,用于模拟 HTTP 请求,测试 Web 层控制器。

      • 集成测试:支持通过 @SpringBootTest 在 Spring Boot 项目中进行完整的集成测试。

  4. Spring 框架的优势与应用场景 

    • 优势

      • 高度解耦:IOC 和 DI 使得类之间解耦,业务代码的逻辑与配置分离。

      • 可扩展性强:Spring 提供丰富的配置方式(XML、注解、Java 配置类),灵活且易扩展。

      • 横切关注点管理:通过 AOP 简化了日志记录、事务管理、权限控制等横切关注点的处理。

      • 丰富的生态系统:包括 Spring Boot、Spring Data、Spring Security 等模块,可以构建各种规模的应用。

      • 高兼容性:与主流技术和框架(如 JPA、MyBatis、Hibernate)无缝集成,能够在现有项目中逐步采用 Spring。

    • 应用场景

      • 传统单体应用:Spring 是单体应用开发的理想选择,能有效管理复杂的业务逻辑和数据交互。

      • 微服务架构:使用 Spring Boot 和 Spring Cloud,可以快速构建和管理微服务系统。

      • RESTful API 开发:Spring MVC 提供强大的 REST 支持,使开发 RESTful 接口便捷。

      • 响应式编程:通过 WebFlux,适合高并发、低延迟的实时应用,如在线聊天、股票行情推送等场景。

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

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

相关文章

2.ARM_ARM是什么

CPU工作原理 CPU与内存中的内容: 内存中存放了指令,每一个指令存放的地址不一样,所需的内存空间也不一样。 运算器能够进行算数运算和逻辑运算,这些运算在CPU中都是以运算电路的形式存在,一个运算功能对应一种运算电…

MetaGeneMark:宏转录组转录本基因预测

GeneMark™ download 下载 gunzip gm_key_64.gz tar -xvzf MetaGeneMark_linux_64.tar.gz #查看安装 (完整路径)/gmhmmp #解压文件里面这个比较重要 MetaGeneMark_linux_64/mgm/MetaGeneMark_v1.mod #复制gm_key文件到主路径 mv gm_key_64 .gm_key cp .gm_key /home/zhongpei…

腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时

前言 也是尝试了各种解决方案之后,无果, 后来发现每个服务器提供商都有自己的镜像加速,且只给自家服务器使用,我用的腾讯云 教程 安装docker 直接上链接:云服务器 搭建 Docker-实践教程-文档中心-腾讯云 配置加速镜…

各家AI性格不同,怎样取长补短

你发现了么,每家的AI性格也有区别呢,有些AI比较啰嗦,有些AI回答简洁明了,有些AI条理清晰喜欢列1、2、3。 我们在利用AI的时候,也要学会取长补短,参考各家AI的回答,择优录用。 例如&#xff0c…

Django安装

在终端创建django项目 1.查看自己的python版本 输入对应自己本机python的版本,列如我的是3.11.8 先再全局安装django依赖包 2.在控制窗口输入安装命令: pip3.11 install django 看到Successflully 说明我们就安装成功了 python的Scripts文件用于存…

Socket 和 WebSocket 的应用

Socket(套接字)是计算机网络中的一个抽象层,它允许应用程序通过网络进行通信。套接字用于跨网络的不同主机上的应用程序之间的数据交换。在互联网中,套接字通常基于 TCP(传输控制协议)或 UDP(用…

Materials Studio 2023安装教程(仅作分享参考)

目录 一、软件下载 二、软件介绍 2.1 软件特点 2.2 功能模块 2.3 应用领域 三、安装步骤 一、软件下载 软件名称:Materials Studio 2023 软件语言:英文 软件大小:2.03G 系统要求:Windows10或更高, 64位操作系…

Spark SQL大数据分析快速上手-DataFrame应用体验

【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 大数据与数据分析_夏天又到了的博客-CSDN博客 本节主要介绍如何使用DataFrame进行编程。 4.1.1 SparkSession 在旧版本中,Spark SQL提供…

SSM中maven

一:maven的分模块开发 maven分模块就是在多人操作一个项目时将maven模块导入依赖,注意仓库里面没有资源坐标,需要使用install操作下载。 二:maven的依赖管理 pom文件中直接写的依赖叫做直接依赖,直接依赖中用到的依…

25中海油笔试测评春招秋招校招暑期实习社招笔试入职测评行测题型微测网题型分享

中海油笔试一般采用线上机考的形式。考试时间为 120 分钟,满分 100 分。笔试内容主要包括思想素质测评和通用能力测评两个科目。以下是具体介绍: 1. 思想素质测评: ✅价值观:考察考生对工作、职业、企业等方面的价值观念和态度&…

【笔记】变压器-热损耗-频响曲线推导 - 04 额定功率处损耗特性

0.最大的问题 - 散热 对变压器这类功率器件,最大的问题是散热的效率。因为传统的电路基板热导率并不高,几乎和良性导热材料有近乎两个数量级的导热差异,所以,会采用特殊的导热技术,把热量尽可能快地传导到散热片。 传…

定高虚拟列表:让大数据渲染变得轻松

定高虚拟列表 基本认识 在数据如潮水般涌来的今天,如何高效地展示和管理这些数据成为了开发者们面临的一大挑战,传统的列表渲染方式在处理大量数据时,往往会导致页面卡顿、滚动不流畅等问题,严重影响用户体验(在页面…

我的博客网站为什么又回归Blazor了

引言 在博客网站的开发征程中,站长可谓是一路披荆斩棘。从最初的构思到实践,先后涉足了多种开发技术,包括 MVC、Razor Pages、Vue、Go、Blazor 等。在这漫长的过程中,网站版本更迭近 10 次,每一个版本都凝聚着站长的心…

Uniapp安装Pinia并持久化(Vue3)

安装pinia 在uni-app的Vue3版本中,Pinia已被内置,无需额外安装即可直接使用(Vue2版本则内置了Vuex)。 HBuilder X项目:直接使用,无需安装。CLI项目:需手动安装,执行yarn add pinia…

<网络> 协议

目录 文章目录 一、认识协议 1. 协议概念 2. 结构化数据传输 3. 序列化和反序列化 二、网络计算器 1. 封装socket类 2. 协议定制 request类的序列化和反序列化 response类的序列化和反序列化 报头的添加与去除 Json序列化工具 Jsoncpp 的主要特点: Jsoncpp 的使用方法: 3. Ser…

群控系统服务端开发模式-应用开发-文件上传功能开发

一、文件上传路由 在根目录下route文件夹中app.php文件中,添加文件上传功能路由,代码如下: Route::post(upload/file,common.Upload/file);// 上传文件接口 二、功能代码开发 在根目录下app文件夹下common文件夹中创建上传控制器并命名为Up…

pycharm小游戏贪吃蛇及pygame模块学习()

由于代码量大,会逐渐发布 一.pycharm学习 在PyCharm中使用Pygame插入音乐和图片时,有以下这些注意事项: 插入音乐: - 文件格式支持:Pygame常用的音乐格式如MP3、OGG等,但MP3可能需额外安装库&#xf…

检索增强和知识冲突学习笔记

检索增强生成任务(Retrieval-Augmented Generation, RAG)是一种自然语言处理技术,它结合了信息检索和生成模型,用于生成高质量的文本输出。具体来说,RAG 模型在生成文本时,会先通过检索模块从外部知识库或文…

从0开始深度学习(25)——多输入多输出通道

之前我们都只研究了一个通道的情况(二值图、灰度图),但实际情况中很多是彩色图像,即有标准的RGB三通道图片,本节将更深入地研究具有多输入和多输出通道的卷积核。 1 多输入通道 当输入包含多个通道时,需要…

网管平台(进阶篇):如何正确的管理网络设备?

网络设备作为构建计算机网络的重要基石,扮演着数据传输、连接和管理的关键角色。从交换机、路由器到防火墙、网关,各类网络设备共同协作,形成了高效、稳定的网络系统。本文将详细介绍网络设备的种类,并探讨如何正确管理这些设备&a…