Spring, Spring Boot 和Spring MVC的关系以及区别

一、Spring

简单来说, Spring 是一个开发应用框架,主打轻量级、一站式、模块化,其目的是用于简化企业级应用程序开发。
Spring 的主要功能:管理对象,以及对象之间的依赖关系,面向切面编程,数据库事务管理, 数据访问,web框架支持等。
但是 Spring 具备高度可开放性,并不强制依赖 Spring,开发者可以自由选择 Spring 的部分或者全部,Spring 可以无缝继承第三方框架,比如数据访问框架 ( Hibernate 、JPA ),web框架 (Struts、 JSF)。

二、Spring Boot 

Spring MVC 是 Spring 的一个子框架,Spring诞生之后,大家觉得很好用,于是按照 MVC 模式设计了一个 MVC 框架 ( 一些用Spring 解耦的组件),主要用于开发WEB应用和网络接口,所以,Spring MVC 是一个Web框架。
Spring MVC 基于 Spring 进行开发的,天生的与 Spring 框架集成,可以让我们更简洁的进行Web层开发, 支持灵活的 URL 到页面控制器的映射,提供了强大的约定大于配置的契约式编程支持, 非常容易与其他视图框架集成,如  Velocity、FreeMarker 等。

三、Spring MVC

Spring Boot 是对 Spring 的一个封装,为了简化 Spring 应用的开发而出现的,中小型企业,没有成本研究自己的框架,使用 Spring Boot 可以更加快速的搭建框架,降级开发成本,让开发人员更加专注于 Spring 应用的开发,而无需过多关注XML的配置和一些底层的实现。
Spring Boot 是个脚手架, 插拔式搭建项目,可以快速的集成其他框架进来。比如想使用 SpringBoot 开发 Web 项目, 只需要引入Spring MVC 框架即可,Web 开发的工作是 SpringMVC 完成的,而不是 SpringBoot,想完成数据访问,只需要引入 Mybatis 框架即可。
Spring Boot 只是辅助简化项目开发的,让开发变得更加简单,甚至不需要额外的web服务器,直接 生成jar包执行即可。

四、总结

Spring MVC 和 Spring Boot 都属于Spring,Spring MVC 是基于Spring的一个MVC 框架,而Spring Boot 是基于Spring 的一套快速开发整合包。

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

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

相关文章

NO.1 Hadoop概述

1.1 Hadoop是什么 1.2 Hadoop优势 1.3 Hadoop组成 1.3.1 HDFS架构概述 1.3.2 YARN架构概述 1.3.3 MapReduce架构概述 1.3.4 HDFS、YARN、MapReduce三者关系 1.4 大数据技术生态体系 1.5 推荐系统框架图

数据结构C++——优先队列

文章目录 一、定义二、ADT三、优先队列的描述3.1 线性表3.2 堆3.2.1 最大堆的ADT3.2.2 最大堆的插入3.2.3 最大堆的删除3.2.4 最大堆的初始化3.3 左高树 LT3.3.1 高度优先左高树HBLT3.3.2 重量优先左高树WBLT3.3.3 最大HBLT的插入3.3.4 最大HBLT的删除3.3.5 合并两棵最大HBLT3.…

【Linux】yum的认识与简单配置

今天来初步认识一下yum——Linux下软件包管理器。 既然说到Linux下软件包管理器,那我们不妨来先谈论一下什么是软件包的概念。 1. 什么是软件包? 软件的下载需要源代码编译链接之后生成可执行文件进行运行。无论是Windows系统下还是Linux系统下&#x…

QT总结——图标显示坑

最近写代码遇到一个神仙大坑,我都怀疑我软件是不是坏了,这里记录一下。 写qt工程的时候我们一般会设置图标,这个图标是窗体的图标同时也是任务栏的图标,但是我发现生成的exe没有图标,这个时候就想着给他加一个图标&…

AI学习记录 - 激活函数的作用

试验,通过在线性公式加入激活函数,可以拟合复杂的情况(使用react实现,原创) 结论:1、线性函数的叠加,无论叠加多少次,都是线性的 如下图 示例代码 线性代码,使用ykxb的方式&…

【BUG】已解决:ValueError: All arrays must be of the same length

ValueError: All arrays must be of the same length 目录 ValueError: All arrays must be of the same length 【常见模块错误】 【解决方案】 问题原因 解决方法 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰&…

Python爬虫实战案例(爬取图片)

爬取图片的信息 爬取图片与爬取文本内容相似,只是需要加上图片的url,并且在查找图片位置的时候需要带上图片的属性。 这里选取了一个4K高清的壁纸网站(彼岸壁纸https://pic.netbian.com)进行爬取。 具体步骤如下: …

[Python][Python入门]详细讲解

目录 0.铺垫1.常量和表达式2.变量3.变量的类型1.整数2.浮点数3.字符串4.布尔 4.动态类型特性5.注释∞.积累 0.铺垫 Python中,一个语句写完了之后,可以加上分号,也可以不加 通常情况下都是不加的,如果加了,也不算错如果…

Ubuntu-文件管理器中鼠标右键添加文本文件

文件管理器中鼠标右键添加文本文件 一、概述二、步骤 一、概述 Ubuntu在文管右键发现没有创建文本文件的菜单, 期望如下所示,这样的操作非常简单 二、步骤 找到模板文件夹 在模板文件夹,创建自己想要的文件就好啦 这个也是支持放文件夹去…

【C++】学习笔记——哈希_1

文章目录 十八、哈希1. unordered系列关联式容器2. 底层结构哈希函数哈希冲突 未完待续 十八、哈希 1. unordered系列关联式容器 在C11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只…

Linux云计算 |【第二阶段】AUTOMATION-DAY1

主要内容: 版本控制(集中式、分布式)、Git基础(服务端、客户端部署,基础命令操作、文档版本管理)、Git进阶(数据恢复、分支、冲突管理) 一、版本控制概念 版本控制是一种记录文件变…

iterm2工具的使用|MAC电脑终端实现分屏|iterm2开启滚动操作

iterm2 工具概括 iTerm2 是一款非常强大的终端工具。 iTerm2 最初是为 macOS 开发的,但也有 Windows 、Linux 发行版(Ubuntu、centos…)可用。 应用场景 Mac操作系统中想实现终端分屏 iterm2 工具特点 多标签和分屏: 可以在同一个窗口中打开多个标签…

C基础(学习)2024.7.23

Linux基本命令,vi编译器的使用,简单的编程步骤,程序语言,gcc编译器编译过程,进制转换相关知识可以查看文档http://t.csdnimg.cn/CmqhC 数值表示,词法符号,变量,常量相关知识可以查看…

.mp4格式的视频为何不能通过video标签在chrome浏览器中播放?

chrome浏览器目前只支持编解码格式为H264格式的视频,如果某个.mp4后缀的视频不能在chrome浏览器中播放,多半是这个视频的编码格式不是H264的! 1、可以通过ffmpeg工具查看当前视频的编码格式: ffprobe -v error -select_streams v…

JS_plus.key.addEventListener监听键盘按键

官方文档:https://www.html5plus.org/doc/zh_cn/key.html 监听事件 plus.key.addEventListener(keydown, e > {console.log("keydown: "e.keyCode) }) plus.key.addEventListener(keyup, e > {console.log("keyup: "e.keyCode) })移除事…

arcgis api for js4.x实现点击GraphicsLayer上绘制的Graphic获取Graphic中的attributes中的信息

需求:arcgis api for js4.x 在Map地图中添加GraphicsLayer图层,在GraphicsLayer图层添加绘制graphics点,点击绘制的点,获取graphics点中的attributes中的信息 var cityCenter new Point(116, 36, new SpatialReference({ wkid: …

leetcode日记(48)排列序列

这道题想到了规律就不算难&#xff0c;列了好几个示例想出的规律&#xff0c;试着排序几个就会了 class Solution { public:string getPermutation(int n, int k) {string result;int m1;int i1;for(i;i<n;i) m*i;i--;int pm/i;string s;for(int j0;j<n;j) s.append(to_…

Vue 3 和 SpringBoot 实现文件分片上传示例

前端实现&#xff08;Vue 3和vue-upload-component&#xff09; 安装 vue-upload-component&#xff1a; npm install vue-upload-component --save创建一个Vue组件用于上传文件&#xff08;FileUploader.vue&#xff09;&#xff1a; <template><div><file-…

基于VUE的软件项目开发管理系统/项目管理系统/软件开发过程管理系统的设计与实现

摘 要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括软件项目开发管理系统的网络应用&#xff0c;在外国软件项目开发管理系统已经是很普遍的方式&#xff0c;不过国内的软件项目开发管理可能还处于起步阶段。软件项目开发…

【计算机网络】三次握手、四次挥手

问&#xff1a;三次握手 四次挥手 TCP 连接过程是 3 次握手&#xff0c;终止过程是 4 次挥手 3次握手 第一步&#xff1a;客户端向服务器发送一个带有 SYN&#xff08;同步&#xff09;标志的包&#xff0c;指示客户端要建立连接。 第二步&#xff1a;服务器收到客户端的请求…