Spring,SpringBoot,Spring MVC的区别是什么

1.Spring是什么

我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级的应⽤程序开发起来更简单。

⽤⼀句话概括 Spring:Spring 是包含了众多⼯具⽅法的 IoC 容器。

既然 Spring 是⼀个 IoC(控制反转)容器,重点还在“容器”⼆字上,那么它就具备两个最基础的功能:

  • 将对象存⼊到容器;
  • 从容器中取出对象。

也就是说学 Spring 最核⼼的功能,就是学如何将对象存⼊到 Spring 中,再从 Spring 中获取对象的过程。

1.1 什么是IoC

Spring 是⼀个 IoC 容器,说的是对象的创建和销毁的权利都交给 Spring 来管理了,它本身⼜具备了存储对象和获取对象的能⼒。

IoCInversion of Control
翻译控制反转

控制反转,即控制权反转,对于依赖对象管理的控制权反转,把对象交给spring管理,使用的时候直接使用。

好处:将对象存储在 IoC 容器相当于将以后可能⽤的所有⼯具制作好都放到仓库中,需要的时候直接取就⾏了,⽤完再把它放回到仓库。⽽ new 对象的⽅式相当于,每次需要⼯具了,才现做,⽤完就扔掉了也不会保存,下次再⽤的时候还得重新做,这就是 IoC 容器和普通程序开发的区别。

1.2 什么是DI

DI: Dependency Injection
翻译:依赖注入

所谓依赖注⼊,就是由 IoC 容器在运⾏期间,动态地将某种依赖关系注⼊到对象之中。所以,依赖注⼊(DI)和控制反转(IoC)是从不同的⻆度的描述的同⼀件事情,就是指通过引⼊ IoC 容器,利⽤依赖关系注⼊的⽅式,实现对象之间的解耦

  • 解耦(Decoupling)是指将两个或多个紧密耦合的组件、系统或功能解开,使它们能够独立地进行操作、修改或扩展,而不会对彼此产生过多的影响。解耦的目的是降低组件之间的依赖性,增加系统的灵活性、可维护性和可扩展性。
  • 举个例子:⽐如说我今天⼼情⽐较好,吃⼀顿好的犒劳犒劳⾃⼰,那么“吃⼀顿好的”是思想和⽬标(是 IoC),但最后我是吃海底捞还是杨国福?这就是具体的实现,就是 D

IoC 是“⽬标”也是⼀种思想,⽽⽬标和思想只是⼀种指导原则,最终还是要有可⾏的落地⽅案,⽽ DI就属于具体的实现

2.Spring Boot

Spring Boot 本质上是 Spring 框架的延伸和扩展,它的诞生是为了简化 Spring 框架初始搭建以及开发的过程,使用它可以不再依赖 Spring 应用程序中的 XML 配置,为更快、更高效的开发 Spring 提供更加有力的支持。

3.Spring MVC是什么

官方描述翻译:Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。

由上可知:

  1. Spring MVC 是⼀个 Web 框架。
  2. Spring MVC 是基于 Servlet API 构建的。

它的正式名称是:Spring Web MVC

也被称为:Spring MVCSpring web

那么,什么是MVC呢?

1.MVC是什么

早期的MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构模式,它把软件系统分
模型视图控制器三个基本部分。

在这里插入图片描述

如图所示,Spring MVC就是实现了这一套架构。

  • Model(模型)是应⽤程序中⽤于处理应⽤程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
  • View(视图)是应⽤程序中处理数据显示的部分。通常视图是依据模型数据创建的。
  • Controller(控制器)是应⽤程序中处理⽤户交互的部分。通常控制器负责从视图读取数据, 控制⽤户输⼊,并向模型发送数据。

现在的MVC更合适称之为Spring web。如果想要前后端分离,那么就不适合再做view的开发。而去掉了view,MVC就变成了Spring web。

3.Spring,SpringBoot,Spring MVC的区别是什么

这三者实际上没有明确的区分。一个项目,可以是SpringMVC,又是SpringBoot,又是Spring项目。

Spring:spring框架就像一个家族,有众多衍生产品例如:boot、security、jpa等等。但它们的基础都是Spring的ioc、aop等;ioc提供了依赖注入的容器,aop解决了面向横切面编程,然后在此两者的基础上实现了其他产品的高级功能。

SpringBoot:Spring Boot 对于Spring框架来收,是 Spring 框架的延伸和扩展,它生是为了简化 Spring 框架初始搭建以及开发的过程springBoot框架;相对于springMVC框架来说,它更专注于开发微服务后台接口,不开发前端视图,同时遵循默认优于配置,简化了插件配置流程,不需要配置xml,相springmvc,大大简化了配置流程。

Spring MVC:springMvc是spring基础之上的一个MVC框架,主要处理web开发的路径映射和视图渲染,属于spring框架中WEB层开发的一部分。

举个例子:

Spring :假设Spring是一个高铁,车速很快但是这个高铁买票退票都很不方便,必须要去火车站。
SpringBoot:高铁(Spring)+ 12306(买票退票方便) + 周边配套设置

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

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

相关文章

遇到了一个存在XSS(存储型)漏洞的网站

第一个漏洞self xss(存储型) 存在漏洞的网站是https://www.kuangstudy.com/ 然后点击个人设置 在编辑主页中,我们可以用最简单的script语句进行注入,提交; 出现弹窗,说明它已经把代码进行解析&#x…

LLM - Chinese-Llama-2-7b 初体验

目录 一.引言 二.模型下载 三.快速测试 四.训练数据 五.总结 一.引言 自打 LLama-2 发布后就一直在等大佬们发布 LLama-2 的适配中文版,也是这几天蹲到了一版由 LinkSoul 发布的 Chinese-Llama-2-7b,其共发布了一个常规版本和一个 4-bit 的量化版本…

Linux命令行宝典:随时查询、轻松应对

🕺作者: 迷茫的启明星 学习路线C语言从0到1C初阶数据结构从0到1 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

Flink CEP (一)原理及概念

目录 1.Flink CEP 原理 2.Flink API开发 2.1 模式 pattern 2.2 模式 pattern属性 2.3 模式间的关系 1.Flink CEP 原理 Flink CEP内部是用NFA(非确定有限自动机)来实现的,由点和边组成的一个状态图,以一个初始状态作为起点&am…

文件共享服务器(五)sicis

目录 前言 一、概述 1.iscsi概念 2.iscsi介绍 3.相关名词 二、实验 1.构建iscsi服务 2.实现步骤 服务器端 客户端 3.注意事项 总结 前言 iSCSI是由IBM发明的基于以太网的存储协议,该协议与SUN的NFS协议都是为了解决存储资源共享问题的解决方案。两者意图…

音视频——封装格式原理

视频解码基础 一、封裝格式 ​ 我们播放的视频文件一般都是用一种封装格式封装起来的,封装格式的作用是什么呢?一般视频文件里不光有视频,还有音频,封装格式的作用就是把视频和音频打包起来。 所以我们先要解封装格式&#xff0…

集成学习Boosting - AdaBoost

目录 1. Boosting方法的基本思想 1.1 Bagging VS Boosting 1.2 Boosting算法的基本元素与基本流程 1.3 sklearn中的Boosting算法 2. AdaBoost 3 AdaBoost的基本参数与损失函数 3.1 参数 base_estimator,属性base_estimator_与estimators_ 3.1. 参数 learnin…

用QFramework来重构 祖玛游戏

资料 Unity - 祖玛游戏 GitHub 说明 用QF一个场景就够了,在UIRoot下切换预制体达到面板切换。 但测试中当然要有一个直接跳到测试面板的 测试脚本,保留测试Scene(不然初学者也不知道怎么恢复测试Scene),所以全文按S…

宋浩线性代数笔记(二)矩阵及其性质

更新线性代数第二章——矩阵,本章为线代学科最核心的一章,知识点多而杂碎,务必仔细学习。 重难点在于: 1.矩阵的乘法运算 2.逆矩阵、伴随矩阵的求解 3.矩阵的初等变换 4.矩阵的秩 (去年写的字,属实有点ugl…

多态及其原理

文章目录 构成多态的条件虚函数作用:完成重写 重写重载 重写 隐藏为什么析构函数要搞成符合多态?原理预热对于基类指针或引用指向父类或者子类的成员函数是如何调用不同的函数呢? 一个类如果是基类,它的析构函数最好加上virtual 构成多态的条…

AlSD 系列智能安全配电装置是安科瑞电气有限公司专门为低压配电侧开发的一款智能安全用电产 品-安科瑞黄安南

一、应用背景 电力作为一种清洁能源,给人们带来了舒适、便捷的电气化生活。与此同时,由于使用不当,维护 不及时等原因引发的漏电触电和电气火灾事故,也给人们的生命和财产带来了巨大的威胁和损失。 为了防止低压配电系统发生漏…

2022 China Open Source Report

| 翻译:黄绍雅、岳扬、刘文涛、李思颖 | 编辑:胡欣元 | 设计:胡欣元 As 2022 finally came to an end, we also emerged from the challenging years of the three-year-long COVID pandemic. The new edition of the "China Open Sourc…

06.计算机网络——IP协议

文章目录 网络层IP协议基本概念协议头格式如何解包如何交付网段划分子网掩码特殊的IP地址IP地址的数量限制私有IP地址和公网IP地址路由 网络层 IP协议 IP协议提供一种将数据从A主机送达到B主机的能力,进行网络层的通信。 ​ IP协议 基本概念 主机 —— 配有IP地址…

MQ - 闲聊MQ一二事儿 (Kafka、RocketMQ 、Pulsar )

文章目录 MQ的发展史阶段一:追求解耦阶段二:追求吞吐量与一致性阶段三:追求平台化 MQ的通用架构主题topic、生产者producer、消费者consumer分区partition MQ 存储KafkaGood Design ---> 磁盘顺序写盘Poor Impact---> topic 数量不能过…

LabVIEW可重入VI,VI模板和动态VI之间的差异

LabVIEW可重入VI,VI模板和动态VI之间的差异 应该在何时使用可重入VI、模板VI和动态调用VI?这三种类型之间有什么区别? 可重入VI 当想要同时运行同一VI的多个实例时,将使用可重入VI。当VI不可重入时,VI只有一个数据空…

lama cleaner

这里写自定义目录标题 安装参数包含的额外plugins 安装 conda create --name lamacleaner python3.10 pip install -r requirements.txt pip install gfpgan pip install realesrgan pip install rembg pip install .如果安装本package报错,可以尝试改&#xff1…

后端(四):博客系统项目

咱们在这里实现的是后端项目,前端代码就提一提,不全做重点介绍,在开始讲解这个博客系统项目之前,我们先看看这个项目的前端界面: 登录界面: 个人主页: 博客详情页: 写博客页&#x…

常用API学习07(Java)

Date 在jdk1.8之前,java中的日期和时间是一类的,从1.8之后对日期和时间体系重新做了规划,划分出一个新的包 - java.time包,这个包中包含了日期、时间、时区、日历、单位。 Date,是java中最老的日期和时间类,后续退出…

Arcgis之 KML/KMZ文件转shp

一般我们在Goole Earth上勾画的区域导出后都为KML或者KMZ格式的,但无法在arcgis等软件上直接应用,故需进行一定的转换 1.打开ArcMap,选择ArcToolbox->Conversion Tools->From KML->KML To Layer 得到如下结果(由于本KML…

pytest自动化测试框架tep环境变量、fixtures、用例三者之间的关系

tep是一款测试工具,在pytest测试框架基础上集成了第三方包,提供项目脚手架,帮助以写Python代码方式,快速实现自动化项目落地。 在tep项目中,自动化测试用例都是放到tests目录下的,每个.py文件相互独立&…