10分钟掌握Spring MVC高频注解,用这个套路稳过社招面试!

软件求生 6天前 阅读数 0 #科技



大家好呀,我是小米,一枚31岁的程序员,已经混迹Java江湖十来年,经历过大小公司、裁员风波,也熬过年会自费、凌晨部署上线的深夜时光。

这几年,我越来越喜欢在公众号里写点技术经验,因为我发现:每一次复盘自己的经历,都是一次成长。

今天,我想给大家分享一次真实的社招经历,题目是:“Spring MVC常用注解有哪些?”

当时我听到这题,心里还暗笑一声:这不是小儿科吗?

结果面试官一句话接着一句,追问得我节节败退。也正是这次经历,让我真正系统梳理了Spring MVC的核心注解。现在我也来“还原现场”,一边讲故事,一边分享,保你面试不慌!

故事从一次社招面试说起

那天阳光正好,我穿着洗得有点发白的卫衣,背着电脑包,走进了一家互联网金融公司。

技术面刚开始,气氛很轻松,寒暄几句后,面试官突然问了我一句:

“你平时用Spring MVC吧?”

我点点头:“用得多,公司大部分业务都是Spring Boot + Spring MVC。”

“那你能说说Spring MVC里常用的注解都有哪些吗?讲讲它们分别做什么用的?”

我当时下意识就答了:“这个简单,比如@Controller、@RequestMapping、@ResponseBody这些……”

面试官点点头,继续追问:

“那你知道@RestController和@Controller的区别吗?”

“@PathVariable和@RequestParam的区别呢?”

“拦截器相关注解你用过吗?”

一连串问题砸过来,我瞬间脑子乱成一锅粥,支支吾吾答得不够流畅……

虽然最后我通过了那轮面试,但我知道自己在Spring MVC这块,理解还停留在“会用”的层面,距离“掌握”还差一大截。

于是那天晚上,我一口气梳理出了20多个Spring MVC常用注解,并搭配了使用场景、注意事项、源码笔记,今天就一次性分享给你

Spring MVC 常用注解全梳理(超级硬核版)

我们从四个维度来讲解这些注解:

控制器相关

请求映射相关

请求参数绑定相关

响应结果处理相关

控制器相关注解

1、@Controller

用于定义一个控制器类,是最基础的注解。

会被Spring容器扫描并注册为一个bean。

返回的内容默认会解析为视图(需要配合视图解析器)。

2、@RestController

是@Controller + @ResponseBody的组合注解。

返回值自动转为JSON或XML,不走视图解析。

面试小知识点:

@RestController和@Controller的区别,必须搞清楚!

请求映射相关注解

1、@RequestMapping

万能映射注解,可以映射GET、POST、PUT、DELETE等请求。

可以作用在类和方法上。

2、@GetMapping / @PostMapping / @PutMapping / @DeleteMapping

@RequestMapping的语法糖,更简洁。

推荐使用,尤其在Spring Boot项目中。

请求参数绑定相关注解

1、@RequestParam

用于获取 URL 查询参数或表单参数。

可以设置默认值、是否必填:

2、@PathVariable

用于绑定URL中的模板变量。

面试小陷阱:

如果路径和变量名一致,可以省略参数名。但最好写清楚,避免歧义。

3、@RequestBody

用于接收JSON格式的请求体(比如Postman发送的raw JSON)。

必须配合HttpMessageConverter,默认是Jackson。

4、@ModelAttribute

自动将请求参数绑定到Java对象中,还能提前在方法前准备数据。

响应结果处理相关注解

1、@ResponseBody

表示返回的是数据(JSON、XML等),不是视图名。

已被@RestController整合。

2、@ResponseStatus

设置返回的HTTP状态码,不依赖于抛异常。

Spring MVC 拦截器与扩展点注解

虽然这些不是日常最常见,但面试也常考:

1、@ControllerAdvice

全局控制器增强器,可以处理全局异常、绑定参数、返回统一响应。

2、@ExceptionHandler

配合@ControllerAdvice或单个Controller使用,处理指定异常。

3、@InitBinder

用于自定义参数绑定,比如字符串转日期。

面试官想听的不只是“名字”,而是“理解”

这就是我社招面试中经历的一道“看似简单却能深挖”的题。

你可以背下十个注解的名字,但真正厉害的答法是这样:

说出注解名的使用场景

分析注解背后的设计理念

讲出真实项目中你如何用它解决问题

比如:

“我在项目中用@RequestBody结合前端的JSON交互,解决了Form表单字段过多时绑定麻烦的问题;而@ControllerAdvice我们用来统一异常处理,输出标准格式的错误码和提示信息。”

这才是面试官喜欢的回答方式!

END

讲真的,我自己就是走过一段“只会用、不会说”的路。

但技术人的成长,往往不是靠“知道”多少,而是你能讲清楚、能写明白、能实践到项目里多少。

所以这篇文章,不仅是帮你记注解的工具,也希望你借此反思自己的项目经验。

如果你喜欢这样的讲解方式,也欢迎点赞、收藏、关注我~

我会继续更新真实的Java面试题、项目实践故事,一起成长!

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

软件求生

软件求生

从事软件开发,分享“技术”、“运营”、“产品”等。