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

十一: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,适合高并发、低延迟的实时应用,如在线聊天、股票行情推送等场景。

相关文章:

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

目录 1. Servlet 与 Spring 的关系 2. Spring 框架介绍 Spring 框架的起源与发展 Spring 框架的核心特性 Spring 主要模块介绍 核心模块(Core Container) 数据访问与集成模块(Data Access/Integration) Web 模块&#xff0…...

ts 如何配置引入 json 文件

ts 如何配置引入 json 文件 参考文档: https://maxgadget.dev/article/how-to-import-a-json-file-in-typescript-a-comprehensive-guide 项目中有一个 .json 的文件是配置文件,如何引入到 ts 项目中 配置 tsconfig.json 文件,添加这两个 {…...

LeetCode面试经典150题C++实现,更新中

用C实现下面网址的题目 https://leetcode.cn/problems/merge-sorted-array/?envTypestudy-plan-v2&envIdtop-interview-150 1、数组\字符串 88合并两个有序数组 以下是使用 C 实现合并两个有序数组的代码及测试用例 C代码实现 #include <iostream> #include &l…...

基于springboot的家装平台设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…...

CSS的配色

目录 1 十六进制2 CSS中的十六进制2.1 十六进制颜色的基本结构2.2 十六进制颜色的范围2.3 简写形式2.4 透明度 3 CSS的命名颜色4 配色4.1 色轮4.2 互补色4.3 类似色4.4 配色工具 日常在开发小程序中&#xff0c;客户总是希望你的配色是美的&#xff0c;但是美如何定义&#xff…...

Parallax.js:让智能设备视差效果更智能、更自然

今天给大家分享一款功能非常强大的javascript视觉差特效引擎插件&#xff1a;Parallax.js。 Parallax.js简介 Parallax.js是一个简单的&#xff0c;轻量级的视差引擎。你可以将它作为作为jQuery或Zepto插件来使用&#xff0c;也可以以纯JS的方式来使用。 最-最-最厉害的是它…...

一文熟悉新版llama.cpp使用并本地部署LLAMA

0. 简介 最近是快到双十一了再给大家上点干货。去年我们写了一个大模型的系列&#xff0c;经过一年&#xff0c;大模型的发展已经日新月异。这一次我们来看一下使用llama.cpp这个项目&#xff0c;其主要解决的是推理过程中的性能问题。主要有两点优化&#xff1a; llama.cpp …...

vue/react做多语言国际化的时候,在语言配置中不同的语言配置不同的字体,动态引入scss里面

如果想直接在vue文件的css里面使用&#xff0c;就可以使用i18n的t函数&#xff0c;注意t外层也有引号&#xff1a; font-size: v-bind("t(style.teamCurModelFontSize)"); 前提是要引入t函数&#xff1a;...

Unity——鼠标点击信息和当前位置获取

文章目录 前言一、应用场景二、实现方法1.获取鼠标在屏幕上的位置2.获取鼠标点击位置的世界坐标3.获取鼠标点击位置的UI元素总结前言 在Unity开发中,有时会需要我们获取一些鼠标的信息用于数据交互或者角色控制。 一、应用场景 交互式UI 按钮点击:检测用户是否点击了UI按钮,…...

vue 2的v-***关键字作用及使用场景

作为一个Vue 2的高级前端程序员&#xff0c;你需要熟悉Vue 2的所有指令&#xff08;Directives&#xff09;。以下是Vue 2中的指令及其详细说明&#xff1a; v-text 作用&#xff1a;更新元素的textContent。使用场景&#xff1a;当你需要将数据直接显示在页面上&#xff0c;且…...

Matlab实现鲸鱼优化算法优化随机森林算法模型 (WOA-RF)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 鲸鱼优化算法&#xff08;Whale Optimization Algorithm, WOA&#xff09;是受座头鲸捕食行为启发而提出的一种新型元启发式优化算法。该算法通过模拟座头鲸围绕猎物的螺旋游动和缩小包围圈的方式&#xff0c;在…...

【Android】ubutun 创建Androidstudio桌面快捷方式

此方法不仅适合Androidstudio&#xff0c;其他应用的快捷方式创建同理。 创建桌面快捷方式 进入桌面 cd ~/Desktop创建.desktop文件 touch androidStudio.desktop编辑.desktop文件 [Desktop Entry] TypeApplication Terminalfalse NameAndroid Studio Comment android stu…...

javascript 流程控制,数组【知识点整理】

javascript JS 流程控制条件控制语句循环语句跳转语句&#xff1a;异常处理&#xff1a; JS 数组数组的方法 JS 流程控制 条件控制语句 if 语句&#xff1a;用于在满足特定条件时执行代码块。 if (condition) {// 如果条件为真&#xff0c;则执行代码块 }if…else 语句&#x…...

2.索引:SQL 性能分析详解

SQL性能分析是数据库优化中重要的一环。通过分析SQL的执行频率、慢查询日志、PROFILE工具以及EXPLAIN命令&#xff0c;能够帮助我们识别出数据库性能的瓶颈&#xff0c;并做出有效的优化措施。以下将详细讲解这几种常见的SQL性能分析工具和方法。 一、SQL 执行频率 SQL执行频率…...

Flink SQL

进入 JobManager 容器&#xff1a; docker exec -it 21442d9ca797 /bin/bash 启动 Flink 的 SQL 客户端&#xff1a; /opt/flink/bin/sql-client.sh embedded 尝试创建 Kafka 表&#xff1a; 在启动的 SQL 客户端中&#xff0c;尝试创建一个 Kafka 表&#xff0c;看看是否能…...

鸿蒙UI开发——实现环形文字

1、背 景 有朋友提问&#xff1a;您好关于鸿蒙UI想咨询一个问题 如果我想实现展示环形文字是需要通过在Text组件中设置transition来实现么&#xff0c;还是需要通过其他方式来实现。 针对这位粉丝朋友的提问&#xff0c;我们做一下解答。 2、实现环形文字效果 ❓ 什么是环形…...

QT版发送邮件程序

简单的TCP邮箱程序 **教学与实践目的&#xff1a;**学会网络邮件发送的程序设计技术。 1.SMTP协议 邮件传输协议包括 SMTP&#xff08;简单邮件传输协议&#xff0c;RFC821&#xff09;及其扩充协议 MIME&#xff1b; 邮件接收协议包括 POP3 和功能更强大的 IMAP 协议。 服务…...

JavaSE:初识Java(学习笔记)

java是高级语言的面向对象语言 .[最贴近生活.最快速分析和设计程序] 一&#xff0c;计算机语言发展历史 二&#xff0c;Java体系结构 1&#xff0c;JavaSE&#xff08;Java Standard Edition&#xff09; 标准版&#xff0c;定位在个人计算机上的应用 这个版本是Jav…...

ClickHouse创建分布式表

ClickHouse创建分布式表 当数据量剧增的时候&#xff0c;clickhouse是采用分片的方式进行数据的存储的&#xff0c;类似于redis集群的实现方式。然后想进行统一的查询的时候&#xff0c;因为涉及到多个本地表&#xff0c;可以通过分布式表的方式来提供统一的入口。由于是涉及到…...

Flink转换算子

Apache Flink 是一个用于处理无界和有界数据的开源流处理框架。在 Flink 中&#xff0c;转换&#xff08;Transformation&#xff09;是数据流处理的核心组件之一&#xff0c;它们定义了如何从输入数据集生成输出数据集。以下是 Flink 中一些常见的转换算子&#xff1a; Map: 将…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...