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?
目录
相关文章
|
10天前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
125 3
|
7月前
|
前端开发 Java 测试技术
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
本文介绍了 `@RequestParam` 注解的使用方法及其与 `@PathVariable` 的区别。`@RequestParam` 用于从请求中获取参数值(如 GET 请求的 URL 参数或 POST 请求的表单数据),而 `@PathVariable` 用于从 URL 模板中提取参数。文章通过示例代码详细说明了 `@RequestParam` 的常用属性,如 `required` 和 `defaultValue`,并展示了如何用实体类封装大量表单参数以简化处理流程。最后,结合 Postman 测试工具验证了接口的功能。
376 0
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
|
7月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestBody
`@RequestBody` 是 Spring 框架中的注解,用于将 HTTP 请求体中的 JSON 数据自动映射为 Java 对象。例如,前端通过 POST 请求发送包含 `username` 和 `password` 的 JSON 数据,后端可通过带有 `@RequestBody` 注解的方法参数接收并处理。此注解适用于传递复杂对象的场景,简化了数据解析过程。与表单提交不同,它主要用于接收 JSON 格式的实体数据。
579 0
|
7月前
|
前端开发 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@PathVariable
`@PathVariable` 是 Spring Boot 中用于从 URL 中提取参数的注解,支持 RESTful 风格接口开发。例如,通过 `@GetMapping("/user/{id}")` 可以将 URL 中的 `{id}` 参数自动映射到方法参数中。若参数名不一致,可通过 `@PathVariable("自定义名")` 指定绑定关系。此外,还支持多参数占位符,如 `/user/{id}/{name}`,分别映射到方法中的多个参数。运行项目后,访问指定 URL 即可验证参数是否正确接收。
377 0
|
7月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestMapping
@RequestMapping 是 Spring MVC 中用于请求地址映射的注解,可作用于类或方法上。类级别定义控制器父路径,方法级别进一步指定处理逻辑。常用属性包括 value(请求地址)、method(请求类型,如 GET/POST 等,默认 GET)和 produces(返回内容类型)。例如:`@RequestMapping(value = "/test", produces = "application/json; charset=UTF-8")`。此外,针对不同请求方式还有简化注解,如 @GetMapping、@PostMapping 等。
327 0
|
7月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RestController
本文主要介绍 Spring Boot 中 MVC 开发常用的几个注解及其使用方式,包括 `@RestController`、`@RequestMapping`、`@PathVariable`、`@RequestParam` 和 `@RequestBody`。其中重点讲解了 `@RestController` 注解的构成与特点:它是 `@Controller` 和 `@ResponseBody` 的结合体,适用于返回 JSON 数据的场景。文章还指出,在需要模板渲染(如 Thymeleaf)而非前后端分离的情况下,应使用 `@Controller` 而非 `@RestController`
239 0
|
3月前
|
JSON 前端开发 Java
第05课:Spring Boot中的MVC支持
第05课:Spring Boot中的MVC支持
195 0
|
4月前
|
Java 关系型数据库 MySQL
【Spring】【事务】初学者直呼学会了的Spring事务入门
本文深入解析了Spring事务的核心概念与使用方法。Spring事务是一种数据库事务管理机制,通过确保操作的原子性、一致性、隔离性和持久性(ACID),维护数据完整性。文章详细讲解了声明式事务(@Transactional注解)和编程式事务(TransactionTemplate、PlatformTransactionManager)的区别与用法,并探讨了事务传播行为(如REQUIRED、REQUIRES_NEW等)及隔离级别(如READ_COMMITTED、REPEATABLE_READ)。
339 1
|
7月前
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
10月前
|
Java 数据库连接 Maven
最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)
自动装配是现在面试中常考的一道面试题。本文基于最新的 SpringBoot 3.3.3 版本的源码来分析自动装配的原理,并在文未说明了SpringBoot2和SpringBoot3的自动装配源码中区别,以及面试回答的拿分核心话术。
最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)

热门文章

最新文章