【发布时间】:2015-12-31 14:14:29
【问题描述】:
我刚刚开始学习 Spring。在我的下一步中,我想开发更大的 Web 应用程序。
现在我想知道我应该从 Spring Boot 还是 Spring MVC 开始。我已经读过一些东西,但这很令人困惑,因为两者看起来很相似。
那么这两者有什么区别呢?
【问题讨论】:
标签: spring spring-mvc spring-boot
我刚刚开始学习 Spring。在我的下一步中,我想开发更大的 Web 应用程序。
现在我想知道我应该从 Spring Boot 还是 Spring MVC 开始。我已经读过一些东西,但这很令人困惑,因为两者看起来很相似。
那么这两者有什么区别呢?
【问题讨论】:
标签: spring spring-mvc spring-boot
为了补充一点,Java Spring 是一个框架,而 Java Spring Boot 是一个附加组件,通过提供预配置和/或易于使用的组件来加速它。 始终建议在跳到 Java Spring Boot 之前先了解 Java Spring 的基本概念。
【讨论】:
Spring MVC 和 Spring Boot 的存在目的不同。因此,将彼此作为竞争者进行比较是不明智的。
什么是 Spring Boot?
Spring Boot 是一个使用合理的默认值打包 Spring 应用程序的框架。这是什么意思?。您正在使用 Spring MVC、Spring Data、Hibernate 和 Tomcat 开发 Web 应用程序。您如何将此应用程序打包并部署到您的 Web 服务器。目前,我们必须手动编写配置、XML 文件等以部署到 Web 服务器。
Spring Boot 在您的项目中使用零 XML 配置为您做到这一点。相信我,您不需要部署描述符、Web 服务器等。Spring Boot 是一个神奇的框架,它为您捆绑了所有依赖项。最后,您的 Web 应用程序将是一个带有嵌入式服务器的独立 JAR 文件。
如果您仍然对它的工作原理感到困惑,请阅读使用 Spring Boot 进行微服务框架开发。
什么是 Spring MVC?
它是一个传统的 Web 应用程序框架,可帮助您构建 Web 应用程序。类似于 Struts 框架。
Spring MVC 是一个用于构建 Web 应用程序的 Java 框架。它遵循模型-视图-控制器设计模式。它实现了核心 spring 框架的所有基本功能,例如控制反转、依赖注入。
Spring MVC 在 DispatcherServlet 的帮助下,为在 Spring 框架中使用 MVC 提供了一个优雅的解决方案。在这里,DispatcherServlet 是一个类,它接收传入的请求并将其映射到正确的资源,例如控制器、模型和视图。
我希望这可以帮助您了解其中的区别。
【讨论】:
不要在以前的答案中重复同样的事情,
我正在为那些希望开始一个新项目并且不知道哪个是启动项目的最佳框架的人写这个答案。
如果您是这个框架的初学者,我最喜欢的最好方法是使用 spring boot(使用 STS /Spring Tool Suite)。因为它有很大帮助。它自己完成所有配置。此外,将 Hibernate 与 spring-boot 一起用作数据库框架。使用这种组合,您的应用程序将是最好的。我可以用我的经验来保证。
即使这是 JEE(目前)最好的框架之一,它也会在不久的将来消亡。有轻量级的替代品出现。因此,请随时了解您的经验,不要拘泥于一个特定的框架。最好的事情是精通概念,而不是框架。
【讨论】:
这是区分 Spring、Spring MVC 和 Spring Boot 的一些要点:
春天:
Spring MVC
春季启动:
(进化类似:Spring -> Spring MVC -> Spring Boot,因此新版本具有旧版本功能的兼容性。) 注意:它不包含所有点。
【讨论】:
这样想:
Spring MVC 是一个基于 Web 的框架,用于实现 MVC 架构。
Spring Boot 是面向程序员的工具。程序员必须专注于编程,工具必须专注于配置。所以我们不需要浪费时间配置一堆 xml 来制作一个简单的“Hello world”。
【讨论】:
简单来说可以这样表述:
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 是一个 Opinionated 框架,所以它的构建考虑到了快速开发、更少的配置时间和非常好的社区支持。
【讨论】:
@Controller 注释的类,
您可以在其中实现可以使用不同 HTTP 请求访问的方法。它有一个等效的 @RestController 来实现基于 REST 的 API。因此,Spring MVC 是一个用于 Web 应用程序的框架,而 Spring Boot 是一个基于 Spring 的生产就绪项目初始化程序。访问 SO 中的 Spring MVC tag wiki 和 Spring Boot tag wiki 可能会对您有所帮助。
【讨论】:
Spring Boot 配置我的Web 应用程序,然后使用Spring MVC 实现Web 功能?
Spring MVC 和 Spring Boot 在其他答案中有很好的描述,所以不再重复,让我直接跳到具体细节。 Spring Boot 和 Spring MVC 不具有可比性或互斥性。如果你想使用 Spring 进行 Web 应用程序开发,那么无论如何你都会使用 Spring MVC。那么你的问题就变成了是否使用 Spring Boot。
对于开发常见的 Spring 应用程序或开始学习 Spring,我认为建议使用 Spring Boot。它大大简化了工作,已准备好生产并正在迅速被广泛采用。
我看到有时初学者会问这个问题,因为在 STS(Spring Tool Suite)中有两个向导:一个用于创建 Spring Boot 项目,另一个用于创建 Spring MVC 项目。所以,我的建议是创建一个 Spring Boot 项目并选择 Web 作为其中的一个模块。
【讨论】:
使用 Spring Boot,您无需构建配置。这将在您创建项目时自动完成。
如果你使用 spring MVC,你需要自己构建配置。它更复杂,但至关重要。
【讨论】:
SpringBoot 实际上是预先配置的,它减少了锅炉配置并提供了最简单或快速的方式来启动您的应用程序。
SpringBoot 将头疼的配置从开发人员转移到自己而不是 Spring。
SpringBoot 隐含地基于 Spring 框架概念,如 bean、控制器、服务、jpa 等。
可以说 SpringBoot 是 Spring 的一个包装器。
在 SpringBoot 中,默认的服务器端口是 8080,但如果你想更改,请转到你的 application.properties 并编写
server.port = 8084
【讨论】:
Spring MVC 是 Spring Framework 的一个子项目,旨在设计和开发使用 MVC(模型-视图-控制器)模式的应用程序。 Spring MVC 旨在与 Spring Framework 以及大多数其他子项目完全、完整地集成。
Spring Boot 可以通过 Spring Engineering 团队的 this article 很好地理解。据说它是固执己见的,即它大力提倡某种快速开发的风格,但它的设计足够好,可以容纳规则的例外情况,如果你愿意的话。简而言之,它是一种约定优于配置的方法,它愿意理解您在必要时打破约定的需要。
【讨论】: