Spring MVC 是 Spring Boot 的"全家桶"成员,它被默认内置了。
它不是一种"空洞"的规范:它是一套已经写好的、非常庞大的 Java 代码库。
它是"开箱即用"的 :当你创建一个 Spring Boot 项目并勾选了
Spring Web依赖时,你就已经"安装"了它。你不需要去官网上下载安装包,也不需要像安装数据库那样配置环境,它就像你手机出厂自带的"系统拨号软件"。
🏢 Spring MVC:写字楼物业管理系统
如果你的后端程序是一座写字楼 ,Spring MVC 就是这栋楼的物业管理处 。它的核心任务是:接待访客、安全检查、引导带路、分发快递。
一、 MVC 的三大部门
| 缩写 | 全称 | 写字楼里的角色 | 实际作用 |
|---|---|---|---|
| M | Model (模型) | 仓库/档案室 | 存放公司数据(如:员工名单、合规文件)。 |
| V | View (视图) | 公司的招牌/装修 | 客户看到的门面(在现代开发中,通常是 Vue 等前端渲染)。 |
| C | Controller (控制器) | 前台接待员 | 听客户要找谁,然后打电话给对应部门处理。 |
二、 一次访问的全路径(工作原理)
1. DispatcherServlet(写字楼大门)
这是 Spring MVC 的核心,叫**"中央分发器"**。
-
场景:访客(浏览器请求)来到写字楼大门口。
-
作用:所有的请求第一站都会到这里,由它决定接下来该去哪。
2. HandlerMapping(楼层指引牌)
-
场景:访客说"我要找研发部"。
-
作用 :大门接待员看一眼指引牌(Mapping),发现研发部在 8 楼(对应你代码里的
@RequestMapping("/dev"))。
3. Interceptor(走廊保安)
-
场景:访客坐电梯到了 8 楼,出电梯时被保安拦住了。
-
作用 :这就是你写的拦截器。保安查你的工作证(Token)。
-
白名单:你是来送外卖的,走廊墙上贴着"外卖员免检",保安直接让你过去。
-
拦截:你是陌生访客且没带证件,保安直接把你轰走(返回 401/403)。
-
4. Controller(部门接待)
-
场景:你通过了保安检查,进入了研发部办公室。
-
作用:部门主管(Controller)听取你的需求,去档案室(Model)取了一份文件,然后交给你。
5. ViewResolver / JSON Converter(翻译/打包)
-
场景:主管给你的文件是中文的,但你是外国人。
-
作用 :物业会帮你把文件翻译成你听得懂的语言(比如把 Java 对象转成 JSON 字符串),并打包好。
三、 核心组件的通俗解释
1. 过滤器 (Filter) ------ 大楼外的红绿灯
过滤器在写字楼大门外。它不归物业管,归交警管(Servlet 容器)。
- 作用:检查车辆是否超载、是否限号(比如设置字符编码、全局防攻击拦截)。它在进入大楼(Spring MVC)之前就开始工作了。
2. 拦截器 (Interceptor) ------ 楼层保安
拦截器是物业(Spring MVC)自己请的员工。
- 作用:它能精确知道你找的是哪个部门。它在访客进入办公室(Controller)之前伸手拦住你。
3. 跨域配置 (CORS) ------ 访客准入协议
-
场景:写字楼规定,只有从"友好合作伙伴"街道过来的访客才给开门。
-
作用:配置哪些外部网站(域名)可以调用本楼的服务。
四、 为什么需要 Spring MVC?
如果没有 Spring MVC,你就像在荒地里盖房子:
-
没指引牌 :你得写无数个
if-else判断 URL。 -
没保安:你得在每个办公室门口都写一套查证件的代码。
-
没翻译:你得手动把每一个 Java 对象拼接成 JSON 字符串发给前端。
Spring MVC 的存在,就是为了让后端开发从"盖房子"变成"在写字楼里开公司"。 你只需要关心你的业务(研发部在干嘛),剩下的交通、安保、翻译、打包,物业全都帮你做好了。