Spring Boot教程之三:Spring Boot 与 Spring MVC 及 Spring的区别

Spring Boot 与 Spring MVC 的区别

Spring MVC: Spring 被广泛用于创建可扩展的应用程序。对于 Web 应用程序,Spring 提供了 Spring MVC 框架,它是 Spring 的一个广泛使用的模块,用于创建可扩展的 Web 应用程序。Spring MVC 框架支持分离模块(即模型视图、控制器),并无缝处理应用程序集成。这使开发人员能够使用普通的 Java 类创建复杂的应用程序。可以使用映射在视图和控制器之间传递模型对象。在本文中,我们将了解如何在 Eclipse IDE 中设置 Spring MVC 应用程序并了解如何创建应用程序。Spring MVC 框架由以下组件组成:

  • 模型——模型可以是对象或对象集合,其基本包含应用程序的数据。
  • 视图 –视图用于以特定格式向用户显示信息。Spring 支持各种技术,例如freemarkervelocitythymeleaf
  • 控制器 –它包含应用程序的逻辑部分。@Controller注释用于将该类标记为控制器。
  • 前端控制器 –它仍然负责管理 Web 应用程序的流程。Dispatcher Servlet 在 Spring MVC 中充当前端控制器。

Spring Boot: Spring Boot 建立在传统的 Spring 框架之上。因此,它提供了 Spring 的所有功能,并且比 Spring 更易于使用。Spring Boot 是一个基于微服务的框架,可以在很短的时间内制作出可用于生产的应用程序。在 Spring Boot 中,一切都是自动配置的。我们只需要使用适当的配置来使用特定的功能。如果我们想开发 REST API,Spring Boot 非常有用。Spring Boot 提供了将我们的项目转换为 war 或 jar 文件的功能。此外,Tomcat 的实例也可以在云上运行。Spring Boot 中有四个主要层:

  • 表示层——顾名思义,它由视图(即前端部分)组成。
  • 数据访问层 –数据库上的 CRUD(创建、检索、更新、删除)操作属于此类别。
  • 服务层——由服务类组成并使用数据访问层提供的服务。
  • 集成层——它由不同的 Web 服务组成(任何可通过互联网提供的服务并使用XML消息传递系统)。

Spring MVC 和 Spring Boot 之间的区别:

序号Spring MVC 简介Spring Boot 简介
1.Spring MVC 是一个基于模型、视图和控制器的 Web 框架,广泛用于开发 Web 应用程序。Spring Boot 建立在传统的 Spring 框架之上,广泛用于开发 REST API。
2.如果我们使用 Spring MVC,我们需要手动构建配置。如果我们使用 Spring Boot,则无需手动构建配置。
3.在 Spring MVC 中,需要部署描述符。在 Spring Boot 中,不需要部署描述符。
4.Spring MVC 单独指定每个依赖项。它将依赖关系包装到一个单元中。
5.Spring MVC 框架由四个组件组成:模型,视图,控制器和前端控制器。Spring Boot 中有四个主要层:表示层、数据访问层、服务层和集成层。
6.开发需要更多时间。它减少了开发时间并提高了生产力。
7.Spring MVC 不提供强大的批处理功能。Spring Boot 提供了强大的批处理功能。
8.它提供了可用于构建 Web 应用程序的即用型功能。它提供了用于构建 Spring 驱动的框架的默认配置。

Spring 和 Spring Boot 之间的区别

Spring 
Spring是一个开源轻量级框架,允许 Java 开发人员构建简单、可靠且可扩展的企业应用程序。该框架主要侧

重于提供各种方法来帮助您管理业务对象。与经典 Java 框架和应用程序编程接口 (API)(例如 Java 数据库连接 (JDBC)、JavaServer Pages (JSP) 和 Java Servlet)相比,它使 Web 应用程序的开发变得更加容易。该框架使用各种新技术(例如面向方面编程 (AOP)、普通旧式 Java 对象 (POJO) 和依赖注入 (DI))来开发企业应用程序。Spring 框架可以被视为子框架的集合,也称为层,例如 Spring AOP、Spring 对象关系映射 (Spring ORM)、Spring Web Flow 和 Spring Web MVC。您可以在构建 Web 应用程序时单独使用这些模块中的任何一个。还可以对模块进行分组以在 Web 应用程序中提供更好的功能。 


Spring Boot 

Spring Boot建立
在传统的 Spring 框架之上。因此,它提供了 Spring 的所有功能,并且比 Spring 更易于使用。Spring Boot 是一个基于微服务的框架,可以在很短的时间内创建可用于生产的应用程序。在 Spring Boot 中,一切都是自动配置的。我们只需要使用适当的配置来利用特定的功能。如果我们想开发 REST API,Spring Boot 非常有用。 

为什么选择 Spring Boot 而不是 Spring?

让我们知道,如果 Spring 解决了所有问题,那么 Spring Boot 到底有什么用呢?

我们之所以需要 Spring Boot,是因为我们正在改变或转向微服务之类的应用程序。有了微服务,最重要的目标之一就是我们希望能够非常快速地开发应用程序。因此,我们不想构建一个大型应用程序,而是构建十个小型微服务,这些微服务有自己的范围和功能。基于 Spring 的应用程序有很多配置。它可以是XML 配置、Java 配置或注释等。例如,如果我们想使用 Spring MVC,我们需要使用@ComponentScan注释、Dispatcher servlet视图解析器web jar等。这种配置会使应用程序的开发速度变慢。因此,Spring Boot 自动配置就派上用场了。它会查看类路径上有哪些类型的框架,并查看程序员提供了哪些配置或已经为应用程序提供了哪些配置。它会查看两者。数据未配置,但类路径上有休眠状态,因此它会自动配置数据源。它将配置内存数据库,它将自动配置调度程序 servlet。这称为自动配置。Spring Boot 会创建一个启动项目,所有 XML 配置和依赖项都默认通过该项目获取。

Spring 和 Spring Boot 之间的区别

Spring

Spring Boot

Spring是一个广泛用于开发企业应用程序的开源轻量级框架。

Spring Boot 建立在传统的 Spring 框架之上,广泛用于开发 REST API。

Spring 框架最重要的特性是依赖注入。

Spring Boot 最重要的特性是自动配置。

它有助于创建松散耦合的应用程序。

它有助于创建独立的应用程序。

要运行 Spring 应用程序,我们需要明确设置服务器。

Spring Boot 提供嵌入式服务器,如 Tomcat、Jetty 等。

要运行 Spring 应用程序,需要一个部署描述符。

不需要部署描述符。

为了创建 Spring 应用程序,开发人员需要编写大量代码。

它减少了代码行数。

它不提供对内存数据库的支持。

它为H2等内存数据库提供支持。

开发人员需要为较小的任务编写样板代码。

在 Spring Boot 中,样板代码减少了。

开发人员必须在 pom.xml 文件中手动定义依赖项。

pom.xml 文件在内部处理所需的依赖项。

最后

基本上,Spring 和 Spring Boot 之间没有可比性,它们各自解决各自的问题。这种比较其实并不重要,因为 Spring 解决了自己的依赖注入问题,而 Spring Boot 解决了快速开发等应用程序的问题。最后,它们有各自的问题空间。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Zookeeper的简单使用Centos环境下

目录 前言 一、ZOokeeper是什么? 二、安装Zookeeper 1.进入官网下载 2.解压到服务器 3.配置文件 三.使用Zookeeper 3.1启动相关指令 3.2其他指令 3.3ACL权限 总结 前言 记录下安装zookeeper的一次经历 一、ZOokeeper是什么? ZooKeeper是一…

疫情中的图书馆管理:Spring Boot系统设计

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了疫情下图书馆管理系统的开发全过程。通过分析疫情下图书馆管理系统管理的不足,创建了一个计算机管理疫情下图书馆管理系统的方案。文章介绍了疫情下图…

Excel数据动态获取与映射

处理代码 动态映射 动态读取 excel 中的数据,并通过 json 配置 指定对应列的值映射到模板中的什么字段上 private void GetFreightFeeByExcel(string filePath) {// 文件名需要以快递公司命名 便于映射查询string fileName Path.GetFileNameWithoutExtension(fi…

网络(TCP)

目录 TCP socket API 详解 bind(): 我们的程序中对myaddr参数是这样初始化的: listen(): accept(): 理解accecpt的返回值: 饭店拉客例子 connect tcp服务器和udp类似的部分代码 把套接字设置为监听状态(listen) 测试 查看端口号和IP地址&…

了解鱼叉式网络钓鱼攻击的社会工程学元素

一提到网络攻击,你可能会想象一个老练的黑客躲在类似《黑客帝国》的屏幕后面,利用自己的技术实力积极入侵网络。然而,许多攻击的现实情况远比这平凡得多。 一封带有“未送达”等无害主题的简单电子邮件被放在员工的垃圾邮件文件夹中。他们心…

TS流详解

目录 TS流结构 PSI 节目关联表(PAT Program Association Table) 条件接收表(CAT Conditional Access Table) 节目映射表(PMT Program Map Table) 网络信息表(NIT Nerwork Information Tabl…

【图像处理识别】数据集合集!

本文将为您介绍经典、热门的数据集,希望对您在选择适合的数据集时有所帮助。 1 CNN-ImageProc-Robotics 机器人 更新时间:2024-07-29 访问地址: GitHub 描述: 通过 CNN 和图像处理进行机器人对象识别项目侧重于集成最先进的深度学习技术和…

C语言--分支循环编程题目

第一道题目&#xff1a; #include <stdio.h>int main() {//分析&#xff1a;//1.连续读取int a 0;int b 0;int c 0;while (scanf("%d %d %d\n", &a, &b, &c) ! EOF){//2.对三角形的判断//a b c 等边三角形 其中两个相等 等腰三角形 其余情…

Windows系统使用全功能的跨平台开源音乐服务器Navidrome搭建在线音乐库

文章目录 前言1. 安装Docker2. Docker镜像源添加方法3. 创建并启动Navidrome容器4. 公网远程访问本地Navidrome4.1 内网穿透工具安装4.2 创建远程连接公网地址4.3 使用固定公网地址远程访问 前言 在数字时代&#xff0c;拥有一个个性化、便捷的音乐库成为了许多人的需求。本文…

监控易DEMO功能深度解析:运维行业的智能化转型新助力

在数字化转型的浪潮中&#xff0c;运维行业正面临着前所未有的变革与挑战。为了应对日益复杂的IT架构和不断提升的运维需求&#xff0c;监控易的集中式跨平台一体化监控软件不断升级优化&#xff0c;以适应新的运维环境。本文将对监控易DEMO的功能进行深度解析&#xff0c;探讨…

ElasticSearch学习篇17_《检索技术核心20讲》最邻近检索-局部敏感哈希、乘积量化PQ思路

目录 场景在搜索引擎和推荐引擎中&#xff0c;对相似文章去重是一个非常重要的环节&#xff0c;另外是拍照识花、摇一摇搜歌等场景都可以使用它快速检索。 基于敏感性哈希的检索更擅长处理字面上的相似而不是语义上的相似。 向量空间模型ANN检索加速思路 局部敏感哈希编码 随…

SpringBoot MySQL的增删改查

创建数据库和表 安装MySQL&#xff1a;https://blog.csdn.net/qq_59636442/article/details/141926105 通过Navicat 创建数据库test 创建表student后随便添加一条数据 CREATE TABLE student (id int NOT NULL AUTO_INCREMENT,name varchar(255) DEFAULT NULL,email varchar(2…

23种设计模式-备忘录(Memento)设计模式

文章目录 一.什么是备忘录设计模式&#xff1f;二.备忘录模式的特点三.备忘录模式的结构四.备忘录模式的优缺点五.备忘录模式的 C 实现六.备忘录模式的 Java 实现七.总结 类图&#xff1a; 备忘录设计模式类图 一.什么是备忘录设计模式&#xff1f; 备忘录设计模式&#xff08…

如何删除pdf里的任意一页?删除PDF里任意一页的几种方法

如何删除pdf里的任意一页&#xff1f;尽管PDF文件具有许多优点&#xff0c;如跨平台兼容性和格式保真性&#xff0c;但在编辑和修改方面&#xff0c;它与像Word或Excel这类文档格式不同&#xff0c;通常不能像其他文档那样轻松进行直接的内容删除或修改。这让很多人以为&#x…

css3新特性(二十六课)

1、css3盒子模型 box - sizing: content - box&#xff1b; 是 CSS 中用于定义盒模型宽度和高度计算方式的一个属性值。在这种盒模型下&#xff0c;元素的宽度和高度&#xff08;width和height属性&#xff09;仅包括内容区域&#xff08;content&#xff09;的大小&#xff…

Centos7安装Jenkins脚本一键部署

公司原先Jenkins二进制安装&#xff0c;自己闲来无事在测试主机优化了一下&#xff0c;一键部署&#xff0c;jenkins2.426版本jdk11版本 #!/bin/bashjenkins_file"jenkins-2.426.3-1.1.noarch.rpm"# 更新软件包列表 echo "更新软件包列表..." sudo yum up…

类与对象(c++)——取地址运算符重载,初始化列表,类型转换

1.取地址运算符重载 1.1 const成员函数 a)将const修饰的成员函数称之为const成员函数&#xff0c;const修饰成员函数放到成员函数参数列表的后 ⾯。 b)const实际修饰该成员函数隐含的this指针&#xff0c;表明在该成员函数中不能对类的任何成员进⾏修改。 const 修饰Date类的…

形态学图像处理(Morphological Image Processing)

形态学图像处理(Morphological Image Processing) 前言 ‍ 本博客为个人总结数字图像处理一课所写&#xff0c;并给出适当的扩展和相应的demo。 写博客跟做 checkpoint​ 很像&#xff0c;毕竟个人还不能达到那种信手拈来的境界&#xff0c;忘了就是从零开始训练&#xff0…

如何在K8s集群中管理与使用GPU

背景 随着人工智能的兴起&#xff0c;GPU作为重要的智算算力类型愈发受到重视&#xff0c;而Kubernetes&#xff08;k8s&#xff09;作为业界主流的集群管理系统&#xff0c;如何方便管理、使用GPU也是其需要解决的一大问题&#xff0c;故此收集整理了K8s管理与使用GPU的相关资…

kubepi管理k8s集群,演示如何连接阿里云k8s容器

一、背景 对k8s容器运维的过程中&#xff0c;如果是自建k8s的话&#xff0c;一般会安装dashboard&#xff0c;方便管理&#xff1b;如果是阿里云k8s容器&#xff0c;它是有提供web ui&#xff0c;但是它有个不便之处–需要定期登录&#xff0c;且缺少命令控制台。 当你需要使…