Spring MVC和Spring Boot的区别

我刚刚开始学习春天。在我的下一步,我想开发更大的网络应用程序。

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

那么两者之间有什么不同呢?

226045 次浏览
  • Spring MVC是一个完整的面向HTTP的MVC框架,由Spring框架管理,基于servlet。它相当于JavaEE堆栈中的JSF。最受欢迎 其中的元素是用@Controller注释的类, 在这里实现可以使用不同HTTP请求访问的方法。它有一个等价的@RestController来实现基于rest的api
  • 春天的引导是一个用于快速设置应用程序的实用程序,提供了一个开箱即用的配置,以便构建 Spring-powered应用程序。您可能知道,Spring是集成的 它的伞下的各种不同模块,如spring核心spring数据Spring -web(顺便说一下,它包括Spring MVC)等等。使用这个工具,您可以告诉Spring要使用其中的多少个,并且可以快速设置它们(您可以稍后自行更改)。

因此,Spring MVC是一个用于web应用程序的框架,Spring Boot是一个基于Spring的生产就绪项目初始化器。你可能会发现访问SO中的Spring MVC标签wikiSpring Boot标签wiki很有用。

Spring MVC是Spring框架的子项目,针对使用MVC(模型-视图-控制器)模式的应用程序的设计和开发。Spring MVC被设计成与Spring框架和大多数其他子项目完全、完整地集成。

Spring工程团队可以从这篇文章很好地理解Spring Boot。它被认为是固执己见的,也就是说,它大力提倡某种快速开发风格,但它的设计足够好,可以容纳规则的例外。简而言之,它是一种优于配置方法的约定,它愿意理解您在必要时打破约定的需求。

Spring MVC春天的引导在其他答案中有很好的描述,所以不再重复,让我直接跳到细节。春天的引导Spring MVC不可比较或互斥。如果你想使用Spring进行web应用程序开发,无论如何你都会使用Spring MVC。你的问题就变成了是否使用春天的引导

对于开发普通Spring应用程序或开始学习Spring,我认为建议使用春天的引导。它极大地减轻了工作,已投入生产,并迅速被广泛采用。

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

SpringBoot实际上是预配置的,减少了锅炉配置,并提供了最简单或快速的方式来启动应用程序。

SpringBoot将令人头痛的配置问题从开发人员转移到它自己,而不是Spring。

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

可以说SpringBoot是Spring的包装器。

在SpringBoot中,服务器的默认端口是8080,但如果你想改变,那就去你的应用程序。属性和写入

服务器。端口= 8084

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

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

以下是区分Spring、Spring MVC和Spring Boot的一些要点:

春天:

  1. 主要区别在于“可测试性”。
  2. 春天伴随着DI和IOC而来。通过它,所有辛苦的工作都由系统完成,我们不需要做任何类型的工作(比如,通常我们手动定义类的对象,但通过Di,我们只需要注释@Service或@Component -匹配类来管理它们)。
  3. 通过@Autowired注释,我们可以在单元测试时轻松地模拟()它。
  4. 复制和管道代码。在JDBC中,我们多次编写相同的代码来执行任何类型的数据库操作,Spring通过Hibernate和ORM解决了这个问题。
  5. 良好的与其他框架的集成。如Hibernate, ORM, Junit &5。

Spring MVC

  1. Spring MVC框架是Spring的一个模块,它为面向HTTP的web应用开发提供了便利。
  2. Spring MVC在输入逻辑(控制器)、业务逻辑(模型)和UI逻辑(视图)上有明确的代码分离。
  3. Spring MVC模式有助于开发灵活和松散耦合的web应用程序。
  4. 根据您的需要,提供各种硬编码方式来定制您的应用程序。

Spring Boot:

  1. 创建快速应用程序,这样我们就不用管理单一的大型web应用程序,而是将它们单独划分为不同的微服务,这些微服务有自己的范围。能力。
  2. 使用Web Jar自动配置:在正常的Spring中有很多配置,比如DispatcherServlet,组件扫描,视图解析器,Web Jar, xml。(例如,如果我想配置数据源,实体管理器事务管理器工厂)。当不可用时,使用类路径自动配置。
  3. 附带默认Spring启动器,它附带一些默认的Spring配置依赖项(如Spring Core、Web-MVC、Jackson、Tomcat、验证、数据绑定、日志记录)。也不要担心版本问题。

(演化类似:Spring -> Spring MVC -> Spring Boot,因此新版本具有旧版本功能的兼容性。) 注意:它不包含所有的点

< p > 不用重复之前的答案, < br > 我写这个答案是为了那些想要开始一个新项目,但不知道哪个是启动项目的最佳框架的人。 如果你是这个框架的初学者,我最喜欢的是使用春天的引导(与STS /弹簧工具套件)。因为这很有帮助。它自己做所有的构型。另外,使用带有spring-boot的Hibernate作为数据库框架。通过这种组合,您的应用程序将是最好的。以我的经验我可以保证。< / p >

即使这是JEE(目前)最好的框架之一,但在不久的将来它也会消亡。有一些轻量级的替代品即将问世。所以要不断更新你的经验,不要拘泥于一个特定的框架。最好的事情是精通概念,而不是框架。

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

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是一个opiniated框架,因此它的构建考虑到了开发速度快,配置时间短,并且有很好的社区支持。

这样想:

Spring MVC是一个基于web的框架来实现MVC架构。

春天的引导是一个面向程序员的工具。程序员必须专注于编程,工具必须专注于配置。所以我们不需要浪费时间配置一堆xml来创建一个简单的“Hello world”。

Spring MVC和Spring Boot存在的目的不同。因此,将彼此作为竞争者进行比较是不明智的。

什么是Spring Boot?

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

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

如果你仍然不明白这是如何工作的,请阅读关于使用spring引导开发微服务框架的文章。

什么是Spring MVC?

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

Spring MVC是一个用于构建web应用程序的Java框架。它遵循模型-视图-控制器设计模式。它实现了核心spring框架的所有基本特性,如控制反转、依赖注入。

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

我希望这能帮助您理解其中的区别。

补充一点,Java Spring是一个框架,而Java Spring Boot是附加的,通过提供预配置和易于使用的组件来加速它。 总是建议在跳到Java Spring Boot之前先了解Java Spring的基本概念