Spring MVC和Spring Boot有什么区别? 这样答,面试官直呼666

简介: Spring MVC和Spring Boot有什么区别? 这样答,面试官直呼666

Spring MVC和Spring Boot有什么区别? 这样答,面试官直呼666

作为初级程序员,这样的问题在面试中,也被问到过,随着越来越了解,发现以前自己答的真水。

一般的回答

先来说说我以前的粗浅的回答:

  • 两者没有什么大关系,除了都是Spring家族里的。
  • Spring mvc 是web层的框架,通过Controller提供Http接口服务。
  • Spring Boot 是一种快速搭建的脚手架,通过依赖各种Starter,省略了Spring特别多而繁琐的xml配置。

分析问题

  1. 问spring mvc与 spring boot的区别用意何在?
    因为spring boot虽然兴起时间不短了,但是在2019年时,许多公司还并未去使用。面试官就想通过这个问题知道面试者对技术趋势的了解,以及是否有使用过。
  2. 该如何答的和一般面试者不同,让面试官眼前一亮?
    面试其实是个交流过程,向面试官展示你能力水平,答的太浅,食之无味,自然是要多说,自己掌握面试的节奏。那么针对这个问题,可以引申出去说spring mvc产生的来由,有啥其他可代替的技术选型,有啥差别等等。在Spring Boot角度,可以说说常用到的注解,直接让面试官知道你对其有真正的使用。

亮眼的回答

  • 总:两者作为Spring生态中的组件,产生时间不同,spring mvc很早就诞生,例如之前最主流的企业开发框架ssm,就用到了Spring mvc。Spring Boot作为后起之秀,通过“约定大于配置”来减少许多配置,大大的提高了生产力。
  1. spring mvc
  • 历史:spring mvc诞生在servlet之后,将其封装,简化其开发难度,让开发人员无需处理整个HttpRequest,也无需处理IO流,只需关心业务处理。同时它也进行了切面封装,可以定义全局异常处理器。基于Servlet开发时,IO返回的即是页面显示的,而spring mvc却可以返回一个渲染后页面。
  • 发展:spring mvc发展到现在,已经有@GetMapping, @PostMapping, @RestController等注解,进一步简化了开发。同时REST与前后端分离兴起之后,后端返回前端只需要返回数据即可。
  • 选型:像spring mvc这样的框架,我比较了解的还有一个Jersey,这个框架在外国用的比较多,比如Spring Cloud Eureka就是依赖于Jersey进行Http请求的。
  1. spring boot
  • 历史:spring boot的产生主要是提供工程开发便捷。之前开发Spring工程,除了引入依赖,还需要配置许多上下文容器中的配置,例如我们数据库配置,bean的配置,mvc mapping的声明,都是十分麻烦的。在spring boot上这搭建工程仅需几分钟即可,就像它官网说的那样开箱即用,“just run”。
  • 使用:在spring boot使用上,构建工程时,使用最多的就是引入对应组件的starter,版本交由spring boot管理,省去了解决依赖冲突的工作量。在开发过程中,结合spring以及spring boot引入的一些注解,例如@Configuration, @Bean, @ConditionalOnClass, @ConditionalOnMissingClass等注解,让我们可以更优雅的注入Bean,以及替换掉默认引入的Bean。
  • 总:总之,现在这两个组件我们工程都在使用,搭配起来,开发十分方便。

答案分析及知识点

一个简单的问题是不是回答了特别多,想必面试官用5分钟听完也是耳目一新。那么我们来分析一下,这个答案为啥能够做到呢:

  1. “约定大于配置” 术语的引入,提高层次
  2. 提到servlet,IO流,展示你对基础技术的深入了解程度,对技术历史的了解
  3. @RestController等注解使用,让面试官知道你不仅会ssm中老式的开发,也会较新的开发模式。
  4. 提到Jersey, Eureka,让面试官知道你对技术宽度上的了解,像Jersey这样的选型,我周边许多同事还是根本不知道的,如果面试官没听过Jersey,那么这个问题你已经赢了。
  5. 提到spring boot官网对其描述开箱即用,“just run”,让他知道你对一门技术的学习是会通过官网进行的,有不错的英语阅读的能力。
  6. @ConditionalOnMissingClass等注解是Spring boot中引入的,让面试官知道你是有实际开发经验的,这一点很重要。

一个简单的问题答到这样的程度,对一个有开发经验的初级程序员来说,应该是一个十分亮眼的回答了,也欢迎大佬们进行补充,指出错误!!

接下来的问题,掌握局面

一个简单问题的回答中,已经引出了许多知识点,面试官很有可能就你的回答继续深入的往下问,那么下面这些问题、知识点,也许你也该准备起来了,掌握局面:

  1. servlet容器你们都用什么,tomcat还是jetty? 他们的IO模型有什么区别?
  2. 什么是REST风格,你在项目中是如何实践的?
  3. Jersey与Spring mvc有什么区别,你们为什么选择spring mvc?
  4. spring cloud和spring boot有什么区别?
  5. spring cloud有哪些组件?你们项目里用了哪些?
  6. spring boot 的starter是怎么实现的,我们怎么自定义一个starter?
wanglh
+关注
目录
打赏
0
1
0
0
1
分享
相关文章
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Redis 介绍
本文介绍在 Spring Boot 中集成 Redis 的方法。Redis 是一种支持多种数据结构的非关系型数据库(NoSQL),具备高并发、高性能和灵活扩展的特点,适用于缓存、实时数据分析等场景。其数据以键值对形式存储,支持字符串、哈希、列表、集合等类型。通过将 Redis 与 Mysql 集群结合使用,可实现数据同步,提升系统稳定性。例如,在网站架构中优先从 Redis 获取数据,故障时回退至 Mysql,确保服务不中断。
69 0
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Redis 介绍
|
18天前
|
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 身份和权限认证
本文介绍了 Apache Shiro 的身份认证与权限认证机制。在身份认证部分,分析了 Shiro 的认证流程,包括应用程序调用 `Subject.login(token)` 方法、SecurityManager 接管认证以及通过 Realm 进行具体的安全验证。权限认证部分阐述了权限(permission)、角色(role)和用户(user)三者的关系,其中用户可拥有多个角色,角色则对应不同的权限组合,例如普通用户仅能查看或添加信息,而管理员可执行所有操作。
57 0
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 三大核心组件
本课程介绍如何在Spring Boot中集成Shiro框架,主要讲解Shiro的认证与授权功能。Shiro是一个简单易用的Java安全框架,用于认证、授权、加密和会话管理等。其核心组件包括Subject(认证主体)、SecurityManager(安全管理员)和Realm(域)。Subject负责身份认证,包含Principals(身份)和Credentials(凭证);SecurityManager是架构核心,协调内部组件运作;Realm则是连接Shiro与应用数据的桥梁,用于访问用户账户及权限信息。通过学习,您将掌握Shiro的基本原理及其在项目中的应用。
57 0
Spring 和 Spring Boot 之间的比较
本文对比了标准Spring框架与Spring Boot的区别,重点分析两者在模块使用(如MVC、Security)上的差异。Spring提供全面的Java开发基础设施支持,包含依赖注入和多种开箱即用的模块;而Spring Boot作为Spring的扩展,通过自动配置、嵌入式服务器等功能简化开发流程。文章还探讨了两者的Maven依赖、Mvc配置、模板引擎配置、启动方式及打包部署等方面的异同,展示了Spring Boot如何通过减少样板代码和配置提升开发效率。总结指出,Spring Boot是Spring的增强版,使应用开发、测试与部署更加便捷高效。
56 10
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——ActiveMQ安装
本教程介绍ActiveMQ的安装与基本使用。首先从官网下载apache-activemq-5.15.3版本,解压后即可完成安装,非常便捷。启动时进入解压目录下的bin文件夹,根据系统选择win32或win64,运行activemq.bat启动服务。通过浏览器访问`http://127.0.0.1:8161/admin/`可进入管理界面,默认用户名密码为admin/admin。ActiveMQ支持两种消息模式:点对点(Queue)和发布/订阅(Topic)。前者确保每条消息仅被一个消费者消费,后者允许多个消费者同时接收相同消息。
52 0
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——ActiveMQ安装
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——发布/订阅消息的生产和消费
本文详细讲解了Spring Boot中ActiveMQ的发布/订阅消息机制,包括消息生产和消费的具体实现方式。生产端通过`sendMessage`方法发送订阅消息,消费端则需配置`application.yml`或自定义工厂以支持topic消息监听。为解决点对点与发布/订阅消息兼容问题,可通过设置`containerFactory`实现两者共存。最后,文章还提供了测试方法及总结,帮助读者掌握ActiveMQ在异步消息处理中的应用。
66 0
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——ActiveMQ集成
本文介绍了在 Spring Boot 中集成 ActiveMQ 的详细步骤。首先通过引入 `spring-boot-starter-activemq` 依赖并配置 `application.yml` 文件实现基本设置。接着,创建 Queue 和 Topic 消息类型,分别使用 `ActiveMQQueue` 和 `ActiveMQTopic` 类完成配置。随后,利用 `JmsMessagingTemplate` 实现消息发送功能,并通过 Controller 和监听器实现点对点消息的生产和消费。最后,通过浏览器访问测试接口验证消息传递的成功性。
38 0
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ—— JMS 和 ActiveMQ 介绍
本文介绍如何在Spring Boot中集成ActiveMQ,首先阐述了JMS(Java消息服务)的概念及其作为与具体平台无关的API在异步通信中的作用。接着说明了JMS的主要对象模型,如连接工厂、会话、生产者和消费者等,并指出JMS支持点对点和发布/订阅两种消息类型。随后重点讲解了ActiveMQ,作为Apache开源的消息总线,它完全支持JMS规范,适用于异步消息处理。最后,文章探讨了在Spring Boot中使用队列(Queue)和主题(Topic)这两种消息通信形式的方法。
36 0
|
18天前
|
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Spring Boot 集成 Redis
本文介绍了在Spring Boot中集成Redis的方法,包括依赖导入、Redis配置及常用API的使用。通过导入`spring-boot-starter-data-redis`依赖和配置`application.yml`文件,可轻松实现Redis集成。文中详细讲解了StringRedisTemplate的使用,适用于字符串操作,并结合FastJSON将实体类转换为JSON存储。还展示了Redis的string、hash和list类型的操作示例。最后总结了Redis在缓存和高并发场景中的应用价值,并提供课程源代码下载链接。
51 0
|
18天前
|
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Redis 安装
本教程介绍在 VMware 虚拟机(CentOS 7)或阿里云服务器中安装 Redis 的过程,包括安装 gcc 编译环境、下载 Redis(官网或 wget)、解压安装、修改配置文件(如 bind、daemonize、requirepass 等设置)、启动 Redis 服务及测试客户端连接。通过 set 和 get 命令验证安装是否成功。适用于初学者快速上手 Redis 部署。
25 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等