Spring MVC和Spring Boot有什么区别? 这样答,面试官直呼666
Spring MVC和Spring Boot有什么区别? 这样答,面试官直呼666
作为初级程序员,这样的问题在面试中,也被问到过,随着越来越了解,发现以前自己答的真水。
一般的回答
先来说说我以前的粗浅的回答:
- 两者没有什么大关系,除了都是Spring家族里的。
- Spring mvc 是web层的框架,通过Controller提供Http接口服务。
- Spring Boot 是一种快速搭建的脚手架,通过依赖各种Starter,省略了Spring特别多而繁琐的xml配置。
分析问题
问spring mvc与 spring boot的区别用意何在?
因为spring boot虽然兴起时间不短了,但是在2019年时,许多公司还并未去使用。面试官就想通过这个问题知道面试者对技术趋势的了解,以及是否有使用过。
该如何答的和一般面试者不同,让面试官眼前一亮?
面试其实是个交流过程,向面试官展示你能力水平,答的太浅,食之无味,自然是要多说,自己掌握面试的节奏。那么针对这个问题,可以引申出去说spring mvc产生的来由,有啥其他可代替的技术选型,有啥差别等等。在Spring Boot角度,可以说说常用到的注解,直接让面试官知道你对其有真正的使用。
亮眼的回答
- 总:两者作为Spring生态中的组件,产生时间不同,spring mvc很早就诞生,例如之前最主流的企业开发框架ssm,就用到了Spring mvc。Spring Boot作为后起之秀,通过“约定大于配置”来减少许多配置,大大的提高了生产力。
- 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请求的。
- 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分钟听完也是耳目一新。那么我们来分析一下,这个答案为啥能够做到呢:
“约定大于配置” 术语的引入,提高层次
提到servlet,IO流,展示你对基础技术的深入了解程度,对技术历史的了解
@RestController等注解使用,让面试官知道你不仅会ssm中老式的开发,也会较新的开发模式。
提到Jersey, Eureka,让面试官知道你对技术宽度上的了解,像Jersey这样的选型,我周边许多同事还是根本不知道的,如果面试官没听过Jersey,那么这个问题你已经赢了。
提到spring boot官网对其描述开箱即用,“just run”,让他知道你对一门技术的学习是会通过官网进行的,有不错的英语阅读的能力。
@ConditionalOnMissingClass等注解是Spring boot中引入的,让面试官知道你是有实际开发经验的,这一点很重要。
一个简单的问题答到这样的程度,对一个有开发经验的初级程序员来说,应该是一个十分亮眼的回答了,也欢迎大佬们进行补充,指出错误!!
接下来的问题,掌握局面
一个简单问题的回答中,已经引出了许多知识点,面试官很有可能就你的回答继续深入的往下问,那么下面这些问题、知识点,也许你也该准备起来了,掌握局面:
servlet容器你们都用什么,tomcat还是jetty? 他们的IO模型有什么区别?
什么是REST风格,你在项目中是如何实践的?
Jersey与Spring mvc有什么区别,你们为什么选择spring mvc?
spring cloud和spring boot有什么区别?
spring cloud有哪些组件?你们项目里用了哪些?
spring boot 的starter是怎么实现的,我们怎么自定义一个starter?
Spring MVC和Spring Boot有什么区别? 这样答,面试官直呼666相关推荐
- Spring 事务失效的 8 大场景,面试官直呼666...
前几天发了一篇文章里面有一个关于事务失效的问题: 用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景? 其中有个热心粉丝留言分享了下,我觉得总结得有点经验,给置顶了: ...
- Spring,Spring MVC及Spring Boot区别,你分清了吗
摘要] 对于一个Java开发者来说,Spring可谓如雷贯耳,无论是Spring框架,还是Spring引领的IOC,AOP风格,都对后续Java开发产生的深远的影响,同时,Spring社区总能及时响应 ...
- Spring Boot、Spring MVC、Spring:它们有什么区别?
在本文中,您将获得Spring,Spring MVC和Spring Boot的概述,了解它们可以解决什么问题以及在哪里最好地应用它们.您将学到的最重要的事情是,Spring,Spring MVC和Sp ...
- Spring MVC和Spring Boot的概念以及比较
Spring MVC是什么? (1)Spring MVC是Spring提供的一个强大而灵活的模块式web框架.通过Dispatcher Servlet, ModelAndView 和 View Res ...
- Spring、 Spring MVC、 Spring Boot的关系
一.概念 1.Spring Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系.其核心就是控制反转(IOC) ...
- Spring、Spring MVC、Spring boot、Spring Cloud面试题(史上最全面试题,精心整理100家互联网企业,面试必过)
最全面试题,精心整理100家互联网企业面经,祝你面试成功.面试必过(2023优化版)已发布在个人微信公众号[面向Offer学编程],优化版首先修正了读者反馈的部分答案存在的错误,同时根据最新面试总结, ...
- Spring MVC 到 Spring BOOT 的简化之路
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:juejin.im/post/5aa22d1f5188255 ...
- Spring、Spring MVC、Spring Boot三者的关系还傻傻分不清楚?
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 在本文中,你将获取到有关于Spring,Spring MVC和Spring Boot的概述, ...
- Spring、Spring MVC、Spring Boot对比
本篇结构 本篇将大致分为下列四个部分 什么是Spring? 什么是Spring MVC? 什么是Spring Boot? Spring,Spring MVC,Spring Boot 三者比较 什么是S ...
最新文章
- 基于libvlc和wxWidgets的简单播放器代码阅读
- WHY YOUR PRIVATE CLOUD COULD LOOK A LOT LIKE PAAS
- 第六十二期:看完这篇还不了解Nginx,那我就哭了!
- char varchar nchar nvarchar 四者的区别是什么(为何SQL Server自动给字符串末尾加空格)...
- Apache HttpServer与Tomcat7集群Linux版
- ae在哪里直接复制合成_AE脚本-合成复制脚本(同合成复制修改相互不影响)True Comp Duplicator v3.9.11+使用教程...
- matlab对xrd进行批量分峰,matlab画XRD数据图
- vs2017 脚本错误,当前页面的脚本发生错误
- 汇编语言(第四版)(个人复习点)
- 一行代码,小龟机器人播放“生日快乐”
- Excel如何将多行数据合并为一行并添加间隔符号
- python文本编辑器怎么运行_python程序编辑和运行的几种方法
- 新时间和日期 API-时间校正器(Java8新特性)
- python3 字典遍历操作
- Python合适的开发工具
- Scrapy爬虫项目的管理部署
- 机器学习——线性模型学习
- 无辜被黑 我在北大青鸟的真实工作经历(转帖)
- 故障发散-Recv-Q阻塞
- Dae-Da-Lus小组idea集锦