Spring MVC和Spring Boot之间的区别


234

我刚刚开始学习Spring。在下一步中,我想开发更大的Web应用程序。

现在我想知道应该从Spring Boot还是Spring MVC开始。我已经读过一些东西,但是令人困惑,因为两者看起来很相似。

那么两者之间有什么区别?

Answers:


320
  • Spring MVC是一个完整的面向HTTP的MVC框架,由Spring框架管理并基于Servlet。它相当于JavaEE堆栈中的JSF。其中最流行的元素是带有注释的类@Controller,您在其中实现可以使用不同的HTTP请求访问的方法。它等效@RestController于实现基于REST的API。
  • Spring boot是一个实用程序,用于快速设置应用程序,提供开箱即用的配置,以构建Spring支持的应用程序。如您所知,Spring在其保护伞下集成了各种不同的模块,例如spring-corespring-dataspring-web(顺便说一下,包括Spring MVC)等等。使用此工具,您可以告诉Spring要使用的数量,并且可以快速设置它们(以后您可以自行更改)。

因此,Spring MVC是要在Web应用程序中使用的框架,而Spring Boot是基于Spring的可用于生产的项目初始化程序。您可能会发现在SO中访问Spring MVC标签WikiSpring Boot标签Wiki非常有用。


29
是的,+ 1,Spring boot只是一个自动配置工具(打包为框架)。Spring
MVC

2
这是否意味着Spring Boot仅用于显示控制器返回和发布JSON的视图(HTML)页面,并且如果我想使用该视图显示HTML,则必须使用Spring MVC?
Osama Al-Banna

2
@ OsamaAl-Banna Spring MVC是一种视图层技术,它基本上处理HTTP请求响应,充当控制器(对于HTML,您可以将其与thymeleaf结合使用,例如,对于REST + JSON,请按原样使用它,因为JSON转换是通过集成的Jackson来完成的。Spring Boot集成了整个Spring伞项目(MVC + Data + Core ...),并提供了快速生产就绪的配置以使用它们。
Xtreme Biker

3
这是否意味着我可以配置Web应用程序,Spring Boot然后使用来实现Web功能Spring MVC
迈克,

1
@Mike肯定会这么做
Xtreme Biker

105

Spring MVCSpring Boot在其他答案中都有很好的描述,因此,在此不再赘述,让我直接讲一下具体内容。Spring BootSpring MVC不具有可比性或互斥。如果要使用Spring进行Web应用程序开发,则无论如何都要使用Spring MVC。然后,您的问题就变成是否使用Spring Boot

对于开发常见的Spring应用程序或开始学习Spring,我认为建议使用Spring Boot。它极大地简化了工作,准备生产并迅速被广泛采用。

我看到有些初学者有时会问这个问题,因为在STS(Spring工具套件)中有两个向导:一个用于创建Spring Boot项目,另一个用于创建Spring MVC项目。因此,我的建议是创建一个Spring Boot项目并在其中选择Web作为模块。


1
当您使用spring-boot(带有spring-data-rest和spring-web)时,这里有了MVC原理,对吗?我只是感到困惑,因为我认为Spring MVC是唯一使用MVC-Model的Spring版本。
watchme,

5
spring-web只是spring-mvc模块
Sanjay


23

简单来说,它可以表示为:

Spring boot = Spring MVC + Auto Configuration(Don't need to write spring.xml file for configurations) + Server(You can have embedded Tomcat, Netty, Jetty server).

而且Spring Boot是一个有思想的框架,因此它的构建考虑了快速开发,更少的配置时间和良好的社区支持。


19

Spring MVC是Spring Framework的子项目,目标是设计和开发使用MVC(模型-视图-控制器)模式的应用程序。Spring MVC旨在与Spring Framework以及可移植的大多数其他子项目完全集成。

Spring BootSpring Engineering团队从这篇文章中可以很好地理解。据说它是自以为是的,即它极力主张某种快速发展的风格,但是如果您愿意的话,它的设计足以适应规则的例外。简而言之,它是一种优于配置方法的约定,它愿意理解您在必要时需要打破约定。


17

这是区分Spring,Spring MVC和Spring Boot的一些要点:

春季:

  1. 主要区别是“测试能力”。
  2. DI和IOC带来了春天。通过它,系统不需要做任何工作(例如,通常我们手动定义类的对象,但是通过Di,我们仅使用@Service或@Component进行注释-匹配的类来管理它们)。
  3. 通过@Autowired批注,我们可以在单元测试时轻松模拟()它。
  4. 复制和管道代码。在JDBC中,我们多次编写相同的代码来执行任何类型的数据库操作,Spring通过Hibernate和ORM解决了该问题。
  5. 与其他框架的良好集成。像Hibernate,ORM,Junit和Mockito。

春季MVC

  1. Spring MVC框架是spring的模块,提供面向HTTP的便利的Web应用程序开发。
  2. Spring MVC在输入逻辑(控制器),业务逻辑(模型)和UI逻辑(视图)上具有清晰的代码分隔。
  3. Spring MVC模式有助于开发灵活且松散耦合的Web应用程序。
  4. 提供各种硬编码方式,以根据需要自定义您的应用程序。

春季靴:

  1. 创建快速应用程序,以便代替管理单个大型Web应用程序,将它们分别划分为具有各自范围和功能的不同微服务。
  2. 使用Web Jar的自动配置:在正常的Spring中,有很多配置,例如DispatcherServlet,组件扫描,View Resolver,Web Jar,XML。(例如,如果我想配置数据源,则为实体管理器事务管理器工厂)。使用class-path不可用时自动配置。
  3. 带有默认的Spring Starters,它带有一些默认的Spring配置依赖项(例如Spring Core,Web-MVC,Jackson,Tomcat,Validation,Data Binding,Logging)。也不必担心版本问题。

(演变方式如:Spring-> Spring MVC-> Spring Boot,所以新版本具有旧版本功能的兼容性。)注意:它不包含所有要点。


10

实际上,已经对SpringBoot进行了预配置,以减少锅炉配置,并提供了最简单或快速的启动应用程序的方法。

SpringBoot将开发人员的头痛从开发人员转移到自己的职责上,而不是Spring。

隐式地,SpringBoot基于Spring框架概念,例如bean,控制器,服务,jpa等。

您可以说SpringBoot是Spring的包装。

在SpringBoot中,默认情况下Server的端口是8080,但是如果要更改,请转到application.properties并编写

server.port = 8084


10
  • 使用spring boot,您将不需要构建配置。创建项目时,这将自动完成。

  • 如果您使用spring MVC,则需要自己构建配置。它更加复杂,但是至关重要。


简单而优雅的澄清
Sritam Jagadev

8

在前面的答案中没有重复相同的内容,
我是为那些希望开始新项目而又不知道哪个是启动项目的最佳框架的人编写的。如果您是该框架的初学者,那么我最好的选择是使用spring boot(带有STS / Spring Tool Suite)。因为它很有帮助。它自己完成所有配置。另外,将Hibernate与spring-boot一起使用作为数据库框架。通过这种组合,您的应用程序将是最好的。我的经验可以保证。

即使这是JEE的最佳框架(目前),在不久的将来也会消失。有轻量级的替代方案。因此,请不断更新您的经验,不要拘泥于一个特定的框架。最好的是流利的概念,而不是框架。


5

这样想:

Spring MVC是一个基于Web的框架,用于实现MVC架构。

春季靴是面向程序员的工具。程序员必须专注于编程,而工具必须专注于配置。因此,我们无需浪费时间配置一堆xml来创建一个简单的“ Hello world”。



1

存在Spring MVC和Spring Boot是出于不同的目的。因此,相互比较作为竞争者是不明智的。

什么是Spring Boot?

Spring Boot是一个用于使用合理的默认值打包spring应用程序的框架。这是什么意思?。您正在使用Spring MVC,Spring Data,Hibernate和Tomcat开发Web应用程序。您如何打包此应用程序并将其部署到Web服务器。到目前为止,我们必须手动编写用于部署到Web服务器的配置,XML文件等。

Spring Boot使用项目中的零XML配置为您完成此任务。相信我,您不需要部署描述符,Web服务器等。SpringBoot是一个神奇的框架,可以为您捆绑所有依赖项。最后,您的Web应用程序将是带有嵌入式服务器的独立JAR文件。

如果您仍然不清楚它是如何工作的,请阅读有关使用Spring Boot开发微服务框架的信息。

什么是Spring MVC?

它是一个传统的Web应用程序框架,可帮助您构建Web应用程序。它类似于Struts框架。

Spring MVC是一个Java框架,用于构建Web应用程序。它遵循Model-View-Controller设计模式。它实现了核心Spring框架的所有基本功能,例如控制反转,依赖注入。

Spring MVC在DispatcherServlet的帮助下提供了一种优雅的解决方案,可以在Spring框架中使用MVC。在这里,DispatcherServlet是一个类,用于接收传入的请求并将其映射到正确的资源,例如控制器,模型和视图。

我希望这可以帮助您了解差异。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.