10分钟掌握Spring MVC高频注解,用这个套路稳过社招面试!
大家好呀,我是小米,一枚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状态码,不依赖于抛异常。
虽然这些不是日常最常见,但面试也常考:
1、@ControllerAdvice
全局控制器增强器,可以处理全局异常、绑定参数、返回统一响应。
2、@ExceptionHandler
配合@ControllerAdvice或单个Controller使用,处理指定异常。
3、@InitBinder
用于自定义参数绑定,比如字符串转日期。
这就是我社招面试中经历的一道“看似简单却能深挖”的题。
你可以背下十个注解的名字,但真正厉害的答法是这样:
说出注解名的使用场景
分析注解背后的设计理念
讲出真实项目中你如何用它解决问题
比如:
“我在项目中用@RequestBody结合前端的JSON交互,解决了Form表单字段过多时绑定麻烦的问题;而@ControllerAdvice我们用来统一异常处理,输出标准格式的错误码和提示信息。”
这才是面试官喜欢的回答方式!
END讲真的,我自己就是走过一段“只会用、不会说”的路。
但技术人的成长,往往不是靠“知道”多少,而是你能讲清楚、能写明白、能实践到项目里多少。
所以这篇文章,不仅是帮你记注解的工具,也希望你借此反思自己的项目经验。
如果你喜欢这样的讲解方式,也欢迎点赞、收藏、关注我~
我会继续更新真实的Java面试题、项目实践故事,一起成长!
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。