Spring、SpringMVC、SpringBoot三者的区别

2023-11-03

        目录

Spring是什么?

SpringMVC是什么?

SpringBoot是什么?

Spring、SpringMVC、SpringBoot三者之间的关系


Spring是什么?

Spring是一个开源的应用程序框架,它提供了一种简易的开发方式,通过依赖注入和面向切面编程,可以实现高内聚低耦合的应用程序。Spring还提供了多个模块,如Spring AOP,Spring JDBC,Spring MVC,Spring ORM,Spring JMS,Spring Test等,可以与各种第三方框架进行整合。

SpringMVC是什么?

SpringMVC是Spring框架的一个模块,专门用于构建Web应用程序。它实现了MVC模式,将应用程序分为三个层次:模型(Model),视图(View)和控制器(Controller)。模型是应用程序的数据层,负责封装业务逻辑和数据访问。视图是应用程序的展示层,负责渲染用户界面。控制器是应用程序的控制层,负责处理用户请求和调用模型和视图。

SpringMVC使用前端控制器模式,通过一个名为DispatcherServlet的核心组件来统一管理所有的请求。DispatcherServlet负责将请求分发给相应的控制器,并将控制器返回的模型和视图名称解析为具体的视图对象,最终将视图渲染给用户。

SpringBoot是什么?

SpringBoot是一个基于Spring框架的微服务框架,它可以快速地创建和运行独立的、生产级的应用程序。它具有以下特点:

  • 自动配置:根据类路径上的依赖包,自动配置合适的组件和属性,无需过多的配置文件。
  • 起步依赖:提供了一系列的Starter模块,可以轻松地引入常用的依赖包,并管理其版本和兼容性。
  • 嵌入式容器:支持内嵌Tomcat、Jetty、Undertow等Web容器,可以直接运行jar包而无需部署war包。
  • 健康检查和度量:提供了Actuator模块,可以监控和管理应用程序的运行状况和性能指标。
  • 外部化配置:支持多种方式来配置应用程序的属性,如properties文件、yaml文件、环境变量、命令行参数等,并支持动态刷新。

Spring、SpringMVC、SpringBoot三者之间的关系

从上面的介绍可以看出,Spring、SpringMVC、SpringBoot三者之间有着密切的联系:

  • SpringMVC是基于Spring框架的一个Web开发模块,它使用了Spring框架提供的依赖注入、事务管理、AOP等特性,并且可以与其他Spring模块进行整合。
  • SpringBoot是基于Spring框架的一个微服务框架,它使用了SpringMVC作为Web开发组件,并且可以引入其他Spring模块作为起步依赖。它还提供了自动配置、嵌入式容器、健康检查等功能,简化了应用程序的开发和部署。

因此,可以说SpringBoot > SpringMVC > Spring,即SpringBoot包含了SpringMVC,而SpringMVC又包含了Spring。但这并不意味着使用了SpringBoot就不需要了解或使用Spring或者SpringMVC了。相反,在使用SpringBoot时,还需要了解Spring和SpringMVC的基本原理和配置方式,以便在需要时进行自定义和调优。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring、SpringMVC、SpringBoot三者的区别 的相关文章

  • 如何重复一段文本中的每个字母?爪哇语

    就像在口吃中一样 如果文本为 dean 并且乘数为 3 则结果将是 dddeeeaaannn 由提供的乘数指定的次数 public static void repeatLetters String text dean int n 3 Str
  • java中高效的输入流到字符串方法

    因此 我在 Java 中的 诚然非常简单 应用程序上运行探查器 令我惊讶的是 仅次于需要在时间上发出 HTTP 请求的方法的是我的方法 inputStreamToString方法 目前它的定义如下 public static String
  • Jenkins 未显示 Maven 编译器错误

    在 Jenkins 中构建多模块 maven 3 项目时 如果出现构建错误 我们会收到一条神秘消息 表明 Maven 编译器插件失败 这在上周才刚刚开始发生 INFO BUILD FAILURE INFO INFO Total time 1
  • Java:一种将 Mime(内容)类型与 CommonsMultipartFile 中的文件扩展名相匹配的方法

    在我的公司 出于额外原因 我需要将 mime 类型与文件扩展名进行比较 我有一个CommonsMultipartFile 我正在尝试找出进行这种比较的最佳方法 我见过一个MimetypesFileTypeMap 但不确定这是否适用于此 我试
  • java:为什么主线程等待子线程完成

    我有一个简单的java程序 主线程 main 创建并启动另一个线程t class T extends Thread Override public void run while true System out println Inside
  • 是否可以创建 Java RAM 磁盘以与 java.io.* API 一起使用?

    我正在使用一个第三方库 它基本上创建一个输出目录 其中包含不同类型的文件和子目录 我希望能够编写单元测试来确认输出正确 我希望能够将库与 RAM 磁盘一起使用 这样库所做的任何事情都不会以任何方式接触实际的磁盘板 这个想法是让测试运行和清理
  • Spring SpEL - 用于创建字符串和自定义对象映射的表达式语言

    我在用着春季启动从属性文件中读取以下内容的示例 sub region data AF subRegionCd 34 subRegionName Southern Asia subRegionDesc status A 我在下面使用过 但不起
  • java彩色滚动条搜索结果

    我将如何在 Java 中自定义滚动条 以便我可以进行像 chrome 一样的搜索 也就是说在结果所在的位置放置彩色条纹 我不想要一个库 因为我更喜欢自己编写代码 另外 我不想失去我拥有的 L F 欢迎举例 实际上 它将查看一个大的文本文件或
  • @PrePersist 在 Hibernate + Spring 环境中不能与 @MappedSuperclass 一起使用

    我正在使用专用存储库创建 注册新用户 Service public class RegistrationService Autowired private AppUserRepository appUserRepository Transa
  • 从字符串中删除重音符号

    Android 中有没有什么方法 据我所知 没有 java text Normalizer 可以从字符串中删除任何重音 例如 变成 eau 如果可能的话 我想避免解析字符串来检查每个字符 java text NormalizerAndroi
  • 如何在 JmsMessagingTemplate.sendAndReceive 上设置等待超时

    我在 MVC 控制器中使用 JmsMessagingTemplate 的 sendAndReceive 但如果没有发送回复消息 它似乎会永远等待回复 该文档指出 返回 回复 如果无法接收消息 例如由于超时 则可能为 null 然而 我只是不
  • javadoc 子集/java 库组织

    我自己从来没有运行过javadoc 无论是在命令行还是ant 的 javadoc 任务 http ant apache org manual Tasks javadoc html 我将使用 ant 我需要为我编写的库生成 javadoc 问
  • 添加 char 和 int

    据我了解 字符是一个字符 即一个字母 一个digit 标点符号 制表符 空格或类似的东西 因此 当我这样做时 char c 1 System out println c 输出 1 正是我所期望的 那么为什么当我这样做时 int a 1 ch
  • 向Java类库添加函数

    我使用的 Java 类库在很多方面都不完整 有很多类我认为应该内置其他成员函数 但是 我不确定添加这些成员函数的最佳实践 让我们调用不足的基类A class A public A long arbitrary arguments publi
  • 如何使用 AffineTransform.quadrantRotate 旋转位图?

    我想旋转一个bitmap关于它的中心点 然后将其绘制成更大的图形上下文 位图是40x40 pixels 图形上下文是500x500 pixels 这就是我正在做的 BufferedImage bi new BufferedImage 500
  • 在 Spring MVC 中将请求写入文件

    我希望能够将整个请求写入 Spring MVC 控制器中的文件 我已尝试以下操作 但即使我使用大量参数发出 POST 请求 文件也始终为空 RequestMapping method RequestMethod POST value pay
  • Spring 如何在运行时获取有关“强类型集合”的泛型类型信息?

    我在 Spring 3 0 文档中阅读了以下内容 强类型集合 仅限 Java 5 在 Java 5 及更高版本中 您可以使用强类型集合 使用泛型类型 也就是说 可以声明一个 Collection 类型 使其只能包含 String 元素 例如
  • 使用 Hibernate Envers 的复合表

    我有一个带有复合表的应用程序 其中包含一个额外的列 一切正常 直到我们添加 Hibernate Envers Audited org hibernate MappingException 无法读取 no pack response Resp
  • Graphics2D setfont() 严重减慢了 java 应用程序的启动速度

    我正在用java制作一个游戏 它每秒刷新60次 每次执行循环时 我都会使用 g2d 来绘制图像和字符串 如果我这样做的话一切都会很好g2d setFont new Font Arial Font PLAIN 8 和抽绳 这将是正常的 但如果
  • MyBatis 枚举的使用

    我知道以前有人问过这个问题 但我无法根据迄今为止找到的信息实施解决方案 所以也许有人可以向我解释一下 我有一个表 状态 它有两列 id 和 name id是PK 我不想使用 POJO Status 而是使用枚举 我创建了这样一个枚举 如下所

随机推荐

  • 实现子域的委派

    准备 两台主机 一台父域 一台子域 1 在父域服务器 vim etc named conf dnssec enable no dnssec validation no vim var named magedu com zone zhengz
  • python编程考试题目大全

    1 题目名称 批阅奏章 某朝皇帝有大臣n名 1 lt n lt 1000 分别编号大臣1 n 某日皇帝身体抱恙 奏章堆积如山无法及时一一批阅 便命身旁內侍帮他把奏章按指定顺序排序后再阅 于是皇帝亲自挑选了几个值得信赖的重臣并排好序 要求把他
  • GitHub开源项目及代码分享:GitHub图像识别开源项目

    北京大学研究者开发了一款图像识别程序 基于深度卷积和递归神经网络的新型深度网络体系结构 用于单图像去除 结合递归神经网络以保留先前阶段中的有用信息 团队对合成数据集和现实数据集进行了大量实验 提出的方法在所有评估指标下都优于目前最先进的方法
  • Ubuntu虚拟机环境搭建Android系统源码编译环境及问题解决方法

    一 获取Android源码网络配置可以访问google 方法一 二 获取Android源码网络配置可以访问google 方法二 三 Ubuntu18 04下更改apt源为阿里云源 四 代理导致网络无法访问时 证书问题的解决方法 五 Ubun
  • Qt的自定义控件

    功能类似于WPF的UserControl 具体步骤如下 1 首先 新建一个项目 然后添加Qt设计师界面类 如下所示 2 选择模板 这里使用widget 3 然后给你的控件起个名字 比如MyWidget 4 5创建完成以后 会直接来到UI设计
  • 基于Prometheus+Grafana搭建可视化监控服务 (一) Prometheus监控

    转发于 基于Prometheus Grafana搭建可视化监控服务 一 Prometheus监控 https www cnblogs com huligong1234 p 15142981 html 目录 基于Prometheus Graf
  • 计量数据分析数据库-Stata分析包使用指南、计量分析资料等八大数据大全

    一 计量前沿stata 分析包使用指南 当考虑自变量X对因变量Y的影响时 如果X通过影响变量M来影响Y 则称M为中介变量 mediator或mediating variable Judd Kenny 1981 Baron Kenny 198
  • 灌区信息化现代化建设的主要内容

    灌区是我国经济社会发展的重大公益性基础设施 是国家粮食安全与农产品有效供给的命脉 同时是城镇和工业以及生态环境供水的重要载体 也是山水林田湖草系统治理和乡村振兴的重要支撑 灌区信息现代化是工程设施现代化 管理方式现代化 创新能力现代化的系统
  • 2023年微信小程序期末大作业-情侣日常动态小程序(附源码下载链接)

    2023年微信小程序期末大作业 情侣日常动态小程序 情侣日常动态小程序介绍 基于微信小程序开发的情侣日常动态小程序 包括日常分享 相册 标签等管理 可作为情侣之间日常分享互动小程序 其他人仅查询不能发布 点击下载源码资源 软件架构 软件架构
  • 微信小程序-解析encryptedData, 用户信息,手机号

    第一步 调用wx login 获取code 第二步 根据code去获取session key get请求 https api weixin qq com sns jscode2session 第三步 将接口返回的session key wx
  • mysql exists深入理解

    前言 某天用exists语句时发现跟我的理解有出入 我以前理解的exists是子查询的结果不会影响最终返回的结果 只要子查询查到有结果 则返回true 没有则返回false 即下面图中的sql 只要house appraisal不是空表 那
  • Linux 无法启动zookeeper

    我们开发的项目使用dubbo框架实现的微服务化 今天启动的时候发现报出如下错误 知道是由于zookeeper未启动造成的 于是在服务器上通过ps ef grep zookeeper进行进程信息查询发现确实未启动 之后进入zookeeper启
  • ZED2相机SDK安装使用及ROS下使用

    等了快半个月的ZED2相机今天拿到手啦 开始ZED2和VINS之旅吧 本篇博客主要记录ZED2相机SDK 安装过程以及在ROS下的环境搭建 编译使用等 搭建后期开发环境 ZED2相机实图 SDK安装 官网上选择与你的Ubuntu系统和CUD
  • (六) ES6 新特性 —— 迭代器(iterator)

    CSDN话题挑战赛第2期 参赛话题 学习笔记 遍历器 Iterator 就是一种机制 它是一种接口 为各种不同的数据结构提供统一的访问机制 任何数据结构只要部署 Iterator 接口 就可以完成遍历操作 1 ES6 创造了一种新的遍历命令
  • el-radio如何分行排版element-ui,每一项占一行用 display: block;

    原来的组件效果 处理后的效果 使用的代码
  • 苹果天气不显示服务器停止,iphone手机通知栏天气不显示怎么办?解决iphone手机通知栏天气无法正常显示的方法...

    天气变化多端如孩子的脸一样说变就变 前一分钟骄阳似火 不一会就滂沱大雨 所以说天气预报是每一个手机里必不可少的功能 每次出门都习惯留意一下天气 但是关键的时候掉链子 iphone 6s通知栏中的天气预报经常会莫名的消失 让本人很是苦恼 费了
  • LeetCode-1832. 判断句子是否为全字母句【哈希表,位运算】

    LeetCode 1832 判断句子是否为全字母句 哈希表 位运算 题目描述 解题思路一 用数组记录 一次遍历 解题思路二 位运算 最终判断mask是否为26个1即 1 lt lt 26 1 解题思路三 0 题目描述 全字母句 指包含英语字
  • vue项目页面添加水印

    vue项目页面添加水印 使用方法 在根组件中全局引入 watermark set 用户名 页面显示效果如下 方法如下 let watermark let setWatermark str gt let id 1 23452384164 12
  • python_error

    inspection info This inspection detects code which can not be normally reached 检验信息 本次检验检测到正常情况下无法达到的代码 inspection info
  • Spring、SpringMVC、SpringBoot三者的区别

    目录 Spring是什么 SpringMVC是什么 SpringBoot是什么 Spring SpringMVC SpringBoot三者之间的关系 Spring是什么 Spring是一个开源的应用程序框架 它提供了一种简易的开发方式 通过