首页 文章

Spring MVC和Spring Boot之间的区别

提问于
浏览
109

我刚开始学习Spring . 在下一步中,我想开发更大的Web应用程序 . 现在我想知道我是否应该从Spring Boot或Spring MVC开始 . 我已经阅读了一些东西,但它有点令人困惑,因为两者看起来都很相似 . 那么这两者有什么不同呢?

8 回答

  • 67

    Nothing to write.... :)
    这是使这两者变得不同的最简单的方法 .

  • 1

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

    从Spring工程团队的this article可以很好地理解 Spring Boot . 它被认为是自以为是,即它大力提倡某种快速发展的风格,但如果你愿意,它的设计足以容纳规则的例外 . 简而言之,它是一种关于配置方法的约定,它愿意在需要时理解您需要打破约定 .

  • 164
    • Spring MVC 是一个完整的面向HTTP的MVC框架,由Spring Framework管理,基于Servlets . 它等同于JavaEE堆栈中的JSF . 其中最受欢迎的元素是使用 @Controller 注释的类,您可以使用不同的HTTP请求实现可以访问的方法 . 它具有等效的 @RestController 来实现基于REST的API .

    • Spring boot 是一个用于快速设置应用程序的实用程序,提供开箱即用的配置以构建Spring驱动的应用程序 . 您可能知道,Spring在its umbrella中集成了各种不同的模块,如spring-core,spring-data,spring-web(顺便提一下包括Spring MVC)等等 . 使用此工具,您可以告诉Spring使用多少个,并为您快速设置(稍后您可以自行更改) .

    因此,Spring MVC是一个用于Web应用程序的框架,而Spring boot是一个基于Spring的 生产环境 就绪项目初始化程序 . 您可能会发现在SO中访问Spring MVC tag wiki以及Spring Boot tag wiki非常有用 .

  • 1

    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作为模块 .

  • 4

    多年来,随着新功能的增加, spring 变得越来越复杂 . 只需访问页面https://spring.io/projects,我们将看到我们可以在我们的应用程序中使用的所有 spring 项目,以实现不同的功能 . 如果必须启动一个新的spring项目,我们必须添加构建路径或添加maven依赖项,配置应用程序服务器,添加spring配置 . So a lot of effort is required to start a new spring project as we have to currently do everything from scratch. Spring Boot is the solution to this problem . Spring boot已经构建在现有的spring框架之上 . 使用spring boot我们避免了以前必须执行的所有样板代码和配置 . 因此,Spring Boot可以帮助我们更加稳健地使用现有的Spring功能,而且工作量最小 .

    spring 靴的特点 -

    • Auto-Configuration - 无需手动配置调度程序servlet,静态资源映射,属性源加载程序,消息转换器等 .

    • Dependency Management - 预先选择了常用库的不同版本,并将其分组到我们可以包含在项目中的不同启动器POM中 . 通过选择一个Spring Boot版本,我们隐含地选择了几十个依赖项,否则我们将不得不选择和协调自己 . 例-

    • Advanced Externalized Configuration - 有一大堆bean属性可以通过application.properties文件配置而无需触及java或xml配置 .

    • Production support - 我们通过http获取 Health 检查,应用程序和jvm指标,jmx以及其他一些免费的东西 .

    • Runnable Jars - 我们可以将您的应用程序打包为包含嵌入式tomcat的可运行jar,因此它提供了一个独立的部署单元

    参考 - Spring Boot - JavaInUse

  • 1

    SpringBoot实际上是预配置的,可以减少锅炉配置并提供最简单或快速的启动应用程序的方法 .

    SpringBoot将配置的头痛从开发人员带到了自己而不是Spring .

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

    你可以说SpringBoot是Spring的包装器 .

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

    server.port = 8084

  • 28
    • 使用spring boot,您无需构建配置 . 这将在您创建项目时自动完成 .

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

  • 3

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

    Spring :

    • 主要区别是"Test-ability" .

    • Spring 天来了DI和IOC . 通过系统完成的所有艰苦工作,我们不需要做任何工作(例如,通常我们手动定义类的对象,但通过Di我们只是用@Service或@Component注释 - 匹配类管理那些) .

    • 通过@Autowired注释,我们可以在单元测试时轻松地模拟()它 .

    • 复制和管道代码 . 在JDBC中我们多次编写相同的代码来执行任何类型的数据库操作Spring通过Hibernate和ORM解决了这个问题 .

    • 与其他框架的良好集成 . 像Hibernate,ORM,Junit和Mockito .

    Spring Boot :

    • 创建快速应用程序,以便不是管理单个大型Web应用程序,而是将它们分别划分为具有各自范围和功能的不同微服务 .

    • 使用Web Jar进行自动配置:在普通的Spring中,有许多配置,如DispatcherServlet,组件扫描,View Resolver,Web Jar,XML . (例如,如果我想配置数据源,Entity Manager事务管理器工厂) . 使用class-path时无法自动配置 .

    • 附带默认的Spring Starters,它带有一些默认的Spring配置依赖(如Spring Core,Web-MVC,Jackson,Tomcat,Validation,Data Binding,Logging) . 不要担心版本控制问题 .

    注意:它不包含所有点 .

相关问题