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?

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

  1. Spring 事务失效的 8 大场景,面试官直呼666...

    前几天发了一篇文章里面有一个关于事务失效的问题: 用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景? 其中有个热心粉丝留言分享了下,我觉得总结得有点经验,给置顶了: ...

  2. Spring,Spring MVC及Spring Boot区别,你分清了吗

    摘要] 对于一个Java开发者来说,Spring可谓如雷贯耳,无论是Spring框架,还是Spring引领的IOC,AOP风格,都对后续Java开发产生的深远的影响,同时,Spring社区总能及时响应 ...

  3. Spring Boot、Spring MVC、Spring:它们有什么区别?

    在本文中,您将获得Spring,Spring MVC和Spring Boot的概述,了解它们可以解决什么问题以及在哪里最好地应用它们.您将学到的最重要的事情是,Spring,Spring MVC和Sp ...

  4. Spring MVC和Spring Boot的概念以及比较

    Spring MVC是什么? (1)Spring MVC是Spring提供的一个强大而灵活的模块式web框架.通过Dispatcher Servlet, ModelAndView 和 View Res ...

  5. Spring、 Spring MVC、 Spring Boot的关系

    一.概念 1.Spring Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系.其核心就是控制反转(IOC) ...

  6. Spring、Spring MVC、Spring boot、Spring Cloud面试题(史上最全面试题,精心整理100家互联网企业,面试必过)

    最全面试题,精心整理100家互联网企业面经,祝你面试成功.面试必过(2023优化版)已发布在个人微信公众号[面向Offer学编程],优化版首先修正了读者反馈的部分答案存在的错误,同时根据最新面试总结, ...

  7. Spring MVC 到 Spring BOOT 的简化之路

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:juejin.im/post/5aa22d1f5188255 ...

  8. Spring、Spring MVC、Spring Boot三者的关系还傻傻分不清楚?

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 在本文中,你将获取到有关于Spring,Spring MVC和Spring Boot的概述, ...

  9. Spring、Spring MVC、Spring Boot对比

    本篇结构 本篇将大致分为下列四个部分 什么是Spring? 什么是Spring MVC? 什么是Spring Boot? Spring,Spring MVC,Spring Boot 三者比较 什么是S ...

最新文章

  1. 基于libvlc和wxWidgets的简单播放器代码阅读
  2. WHY YOUR PRIVATE CLOUD COULD LOOK A LOT LIKE PAAS
  3. 第六十二期:看完这篇还不了解Nginx,那我就哭了!
  4. char varchar nchar nvarchar 四者的区别是什么(为何SQL Server自动给字符串末尾加空格)...
  5. Apache HttpServer与Tomcat7集群Linux版
  6. ae在哪里直接复制合成_AE脚本-合成复制脚本(同合成复制修改相互不影响)True Comp Duplicator v3.9.11+使用教程...
  7. matlab对xrd进行批量分峰,matlab画XRD数据图
  8. vs2017 脚本错误,当前页面的脚本发生错误
  9. 汇编语言(第四版)(个人复习点)
  10. 一行代码,小龟机器人播放“生日快乐”
  11. Excel如何将多行数据合并为一行并添加间隔符号
  12. python文本编辑器怎么运行_python程序编辑和运行的几种方法
  13. 新时间和日期 API-时间校正器(Java8新特性)
  14. python3 字典遍历操作
  15. Python合适的开发工具
  16. Scrapy爬虫项目的管理部署
  17. 机器学习——线性模型学习
  18. 无辜被黑 我在北大青鸟的真实工作经历(转帖)
  19. 故障发散-Recv-Q阻塞
  20. Dae-Da-Lus小组idea集锦

热门文章

  1. python colorama_python colorama模块
  2. Arcpy开发学习资源一览表
  3. 计算机系保研专家推荐信,大学生保研导师推荐信
  4. layui的laytpl使用,以table应用为例
  5. JAVA学习笔记(第十章 多线程)
  6. android 把一个Activity窗口化的实现
  7. react项目搭建(基础学习笔记)
  8. 人工智能--机器学习
  9. 新华三抢鲜首发Wi-Fi 7新品,你离Wi-Fi 7时代有多近?
  10. arch linux 鼠标驱动,archlinux 打印机驱动安装