国庆节10月1日
--


后端课程的收官篇——把第 4~14 章学过的东西串成一张知识地图,从三层架构与 MySQL 出发,把 IOC/DI、AOP、事务管理、全局异常处理、过滤器、拦截器、MyBatis、SpringMVC、JWT、Cookie/Session、阿里云 OSS、SpringBoot 逐个放回架子上的位置,并按 JavaWeb 解决方案、Spring framework、Mybatis 三条线归类

93 篇把 Maven 高级讲完,这一篇是后端的收官篇(总结 PPT 第 1~7 页)。它不讲任何新技术,只干一件事:把整个后端课程串成一张知识地图。
PPT 一共 7 页,其中第 1~6 页是一张不断”点亮”的架构图——第 2 页图上只有三层架构和 MySQL 四个方框;第 3 页一下子把 11 个技术名全点亮;第 4 页给它们归类,并画出 SpringBoot 这条底座;第 5 页补上最后一块 SpringMVC,图才算完整;第 6 页只写了下个阶段的名字;第 7 页是空白页。所以本篇的读法就是顺着这四版图看它每一版新加了什么,再把学过的技术逐个放回图上的位置。
原 PPT 这几页都是用方框和箭头拼出来的示意图(没有位图可截),本篇把它翻译成文字版的图,位置关系按 PPT 原文摆放。
先对一下笔记编号——这张图覆盖的后端部分,一共三个阶段的笔记:
| 阶段 | 学什么 | 笔记 |
|---|---|---|
| 后端 Web 基础(part2) | Maven、HTTP、IOC/DI、MySQL、JDBC、MyBatis | 23-56 篇 |
| 后端 Web 实战(part3) | 部门管理、员工管理、项目实战、登录认证 | 57-84 篇 |
| 后端 Web 进阶(part4) | AOP、SpringBoot 原理、自定义 Starter、Maven 高级 | 85-93 篇 |
第 1 页是封面(「Web 后端开发 / 总结」),第 2 页就是这张图的起点——整张图只有四个方框,最左边是一个浏览器图标(代表”发起请求的一方”),右边四个方框从左到右排成一条线:
1浏览器2 │ 请求3 ▼4Controller ──▶ Service ──▶ Dao ──▶ MySQL5 ◀──────────── 响应 ─────────────┘这四个方框就是三层架构加上数据库,各层职责是第 4 章定的:
| 方框 | 全称 | 职责 | 这一层后来用什么技术实现 |
|---|---|---|---|
| Controller | 控制层 | 接收前端发送的请求,对请求进行处理,并响应数据 | SpringMVC(第 33、35 篇) |
| Service | 业务逻辑层 | 处理具体的业务逻辑 | Spring 容器里的 bean + IOC/DI(38、39 篇) |
| Dao | 数据访问层,也叫持久层 | 负责数据访问操作,包括数据的增、删、改、查 | MyBatis(51~55 篇) |
| MySQL | 数据库 | 数据存储和管理 | MySQL + SQL(40~48 篇) |
记住这张骨架比记住任何一个技术都重要:后面点亮的 11 个技术,全都是挂在四个方框上下的”配件”。Tlias 工程的包结构(controller / service / mapper / pojo)就是这张图的落地写法(57 篇)。
第 3 页还是那张骨架,但四周突然多出 11 个词。它们的摆放位置就是它们的分工,先把位置记下来:
| 技术 | 图上摆在哪 | 它解决什么问题(一句话) | 笔记 |
|---|---|---|---|
| 过滤器 | Controller 最左边(请求进来的第一格) | Filter 是 JavaWeb 三大组件之一,把请求拦下来做通用操作:登录校验、统一编码处理、敏感字符处理 | 83 篇 |
| 拦截器 | 过滤器右边、Controller 之前 | Spring 提供的动态拦截控制器方法的机制,在指定方法调用前后执行预设代码 | 84 篇 |
| IOC | 三层上方(从左数第一格) | 控制反转:对象的创建控制权由程序转移到 Spring 容器,容器负责创建和管理 bean | 38、39 篇 |
| DI | 三层上方第二格 | 依赖注入:容器为程序提供运行时所依赖的资源(对象) | 38、39 篇 |
| AOP | 三层上方第三格 | 面向特定方法编程:把公共逻辑(统计耗时、记录操作日志)抽出来,自动在指定方法前后运行 | 85~87 篇 |
| 事务管理 | 三层上方第四格 | 一组操作是不可分割的工作单位,要么同时成功、要么同时失败(多表写入的兜底) | 70、71 篇 |
| 全局异常处理 | 三层上方第五格 | 项目里异常不可避免、默认返回的结构不符合规范,把它统一转成 Result 返回 | 76 篇 |
| Cookie、Session | 三层下方第一格 | 会话技术:把”登录标记”存在客户端(Cookie)/ 服务端(Session),是登录校验里的”存标记”方案 | 82 篇 |
| JWT | 三层下方第二格 | 令牌技术:登录成功后生成令牌,之后每次请求在请求头里带上它(课程最终选用的方案) | 81、82 篇 |
| 阿里云 OSS | 三层下方第三格 | 第三方云存储(对象存储),解决文件上传后”无法直接访问、磁盘满、磁盘坏” | 72、73 篇 |
| Mybatis | 三层下方第四格(贴着 Dao 与 MySQL) | 持久层框架:Dao 里只写接口 + 注解/XML 映射,SQL 和结果映射不用手写样板代码 | 51~55 篇 |
(PPT 上 Cookie 和 Session 写在同一格里,所以是 11 个词。)
IOC、DI、AOP、事务管理、全局异常处理排在三层上方,这个位置很有意思——它们不属于某一层,而是横切在层与层之间:Controller 里要能拿到 Service 对象(DI 注入),Service 的方法上要能开启事务(事务管理),所有方法外要能包一层公共逻辑(AOP),所有异常要能在最外层被接住(全局异常处理)。它们都由 Spring 框架提供,所以第 4 页会把它们圈进同一个框里。
会话、令牌、云存储、持久层框架排在三层下方,它们都和”数据怎么流转”有关:
过滤器 → 拦截器 → Controller 这个先后顺序不是随便排的:Filter 是 Servlet 规范里的组件,请求还没进 SpringMVC 就被它经手;Interceptor 是 SpringMVC 内部的机制,请求已经到了 SpringMVC、正要调用 Controller 方法时才轮到它(84 篇有一节专门把两者摆在一起对比)。所以登录校验的两套方案写的是同一段逻辑,位置却不一样。
第 4 页把散落的词收进框里,图上出现四个区域名:
| 区域 | 里面装着什么 | 为什么归在一起 |
|---|---|---|
| JavaWeb 解决方案 | 过滤器、Cookie、Session、JWT、阿里云 OSS | 共同点是”通用方案,不靠 Spring”——过滤器来自 Servlet 规范(JavaWeb 三大组件之一),Cookie/Session 来自 HTTP 的会话技术,JWT 是令牌标准,OSS 是第三方云服务 |
| Spring framework | IOC、DI、AOP、事务管理 + 下面的 web 格(拦截器、全局异常处理) | 这是 Spring 框架自己的核心能力:管对象(IOC/DI)、管切面(AOP)、管事务(事务管理),以及 web 支持 |
| Mybatis | Mybatis | 持久层框架单独占一列——它不归 Spring 管,SpringBoot 只是帮它做好自动配置 |
| SpringBoot | SpringBoot | 底座:它不写业务,靠起步依赖 + 自动配置把上面这些技术组装好、把应用拉起来(89 篇) |
这一页最值得记住的是**“web”那一小格**:拦截器和全局异常处理被从上面一排挪进了 Spring framework 的 web 位置——它们不是泛泛的 Spring 能力,而是 web 层的东西。第 5 页这个判断被坐实了。
第 5 页把上一步那个 web 小格写成了正式的名字——SpringMVC,并往里补了两个词:接收请求、响应数据。于是最终版的长这样:
1JavaWeb 解决方案 Spring framework Mybatis2 过滤器 SpringMVC ← 接收请求、响应数据 Mybatis3 Cookie、Session 拦截器、全局异常处理4 JWT IOC、DI、AOP、事务管理5 阿里云 OSS6───────────────────────────────────────────────────────────────────────7 SpringBoot(起步依赖 + 自动配置)SpringMVC 这一格里的四个词,正好对应后端基础里讲”收请求、发响应”的那几篇:
| 图上的词 | 它是什么 | 笔记 |
|---|---|---|
| 接收请求 | 服务器收到 HTTP 请求(请求行、请求头、请求体),SpringMVC 解析后交给对应的 Controller 方法,参数自动绑定 | 32、33 篇 |
| 响应数据 | Controller 返回的对象被转成 JSON 写回浏览器(项目里统一包成 Result) | 34、35 篇 |
| 拦截器 | 拦截控制器方法的执行(登录校验的第二套方案) | 84 篇 |
| 全局异常处理 | 把所有异常统一处理成 Result 格式 | 76 篇 |
这一格解开了一个常见困惑:Controller 层的”接收请求、响应数据”这活,实际是 SpringMVC 在干。@RestController、@RequestMapping、@RequestBody、@RequestParam 这些注解都是 SpringMVC 的;39 篇里那句”声明控制器 bean 只能用 @Controller(或 @RestController),因为 SpringMVC 要认出哪些类是请求处理类”,说的就是这层关系。
把四版图叠起来,一条请求的走向就是从左边进入、穿过三层、到右边的数据库、再原路返回:
1浏览器2 │ ① 请求(请求头里带着 JWT 令牌)3 ▼4过滤器 Filter ← 第一道门(JavaWeb 解决方案那一列)5 │6 ▼7拦截器 Interceptor ──▶ Controller ← 第二道门 + 控制层(都在 SpringMVC 这一格里)8 │ ▲9 │ │ 接收请求 / 响应数据由 SpringMVC 负责10 ▼ │11Service ──▶ AOP 代理(事务管理 / 记录操作日志) ← 业务逻辑层12 │13 ▼14Mapper(MyBatis)──▶ MySQL ← 数据访问层 + 数据库15 │16 └── ② 响应:Result 由 SpringMVC 转成 JSON 原路返回浏览器17 ③ 中途任何异常 ──▶ 全局异常处理 ──▶ Result18 ④ 文件类数据 ──▶ 阿里云 OSS(不进 MySQL)19 ⑤ 上面这一切能跑起来 ──▶ SpringBoot(起步依赖 + 自动配置 + 内嵌 Tomcat)这张图画的是运行时的架构,所以还有几条线不在图上,但它们同样是后端课程的一部分,别漏掉:
| 线 | 内容 | 笔记 |
|---|---|---|
| 构建与依赖管理 | Maven 的坐标、依赖管理、生命周期、依赖范围;分模块设计、继承与聚合、私服 | 23~29 篇、91~93 篇 |
| 配置与运行 | application.yml、配置优先级、Bean 管理、自动配置原理、自定义 starter、内嵌 Tomcat、打包运行 | 56 篇、88~90 篇、31 篇 |
| (顺带)测试与日志 | JUnit 单元测试;Logback 日志技术(76 篇的异常现场、“记录操作日志”案例都靠它) | 27、28、63 篇 |
PPT 第 6 页整页只有五个字:
Web 前端实战
也就是说,后端部分到这里全部结束了,下一个阶段(part5)把镜头切回前端——学 Vue 工程化、ElementPlus,再用同一个 Tlias 案例把页面完整做出来(01 篇的课程表里写着:part5 学”Vue 工程化、ElementPlus、Tlias 案例”,AI 切入点是”AI 辅助前端开发”);再往后 part6 是部署(Linux、Docker)。PPT 第 7 页是一张空白页,全章到此结束。
至于下面这条学习路线,可以当成整个 Web 开发的索引:
1前端基础(HTML/CSS/JS/Vue)→ 后端基础(Maven/HTTP/MySQL/JDBC/MyBatis)2 → 后端实战(Tlias 增删改查、登录认证)→ 后端进阶(AOP、SpringBoot 原理、Maven 高级)3 → 前端实战(Vue 工程化 + ElementPlus + Tlias)→ 部署(Linux + Docker)| 问题 | 答案 |
|---|---|
| 这张图的骨架是什么? | 三层架构 + 数据库:Controller(接收请求、处理请求、响应数据)→ Service(业务逻辑处理)→ Dao(数据访问)→ MySQL(数据存储) |
| 图上第一道门、第二道门分别是谁? | 过滤器 Filter(Servlet 规范,请求还没进 SpringMVC)→ 拦截器 Interceptor(SpringMVC 内部,拦控制器方法) |
| 横在三层上方的是哪些能力? | IOC、DI、AOP、事务管理、全局异常处理——都由 Spring framework 提供 |
| 挂在三层下方的是哪些? | Cookie/Session、JWT(登录标记)、阿里云 OSS(文件存储)、Mybatis(数据访问框架) |
| 三条线怎么分? | JavaWeb 解决方案(过滤器、Cookie/Session、JWT、阿里云 OSS,通用方案不靠 Spring)/Spring framework(IOC、DI、AOP、事务管理 + SpringMVC 那一格)/Mybatis(持久层单独一列) |
| SpringBoot 在图上是什么位置? | 最下面一条底座:起步依赖 + 自动配置把上面的技术组装起来,内嵌 Tomcat 把应用跑起来 |
| SpringMVC 那一格里放了什么? | 接收请求、响应数据、拦截器、全局异常处理——Controller 层的活都是它在干 |
| 后端结束了,下一章是什么? | Web 前端实战(Vue 工程化、ElementPlus、Tlias 案例),再往后是部署(Linux、Docker) |
下面 12 条就是整张地图的”关键点清单”,每条都给出”这个技术解决什么问题、在哪一层”。合上笔记,逐条问自己能不能说出来;说不出来的,点回对应笔记再看一眼。
emp 和 emp_expr),Spring 用 @Transactional 管(70、71 篇)。{"timestamp","status","error","path"} 不符合项目规范;用一个全局异常处理器把异常统一转成 Result,前端永远只处理一种响应形状(76 篇)。HandlerInterceptor,而过滤器实现 Filter)、拦截范围不同(过滤器拦所有资源,拦截器只拦 Spring 环境中的资源)是它与 Filter 的两点区别;靠配置类的 addPathPatterns / excludePathPatterns 决定拦哪些、放哪些,粒度更细(84 篇)。main 方法就能把 Web 应用跑起来;正因为它是底座,才托得住 Spring framework 与 MyBatis 这两列(31、88-90 篇)。2-1 请求进到后端,会先后经过哪两道”门”?为什么两道门的位置不一样? 要求:说出两道门的名字、各自拦什么、由谁提供,并说明过滤器为什么排在拦截器前面。
一级 · 思路:门的位置由它”住在谁家”决定——一个住在 Servlet 规范里,一个住在 SpringMVC 里 二级 · 角度:谁拦的是”请求”,谁拦的是”控制器方法”?请求先到 Servlet 容器还是先到 SpringMVC? 三级 · 骨架:第一道门是 ______(来自 ______ 规范),它拦的是 ______;第二道门是 ______(来自 ______ 框架),它拦的是 ______
先过 过滤器 Filter,再过 拦截器 Interceptor。
顺序的原因:请求是先从浏览器到 Servlet 容器、再到 SpringMVC 的。所以 Filter 天然在外侧、Interceptor 在内侧;PPT 第 3 页把 Filter 画在 Controller 更左边一格,就是这个道理。
2-2 图上为什么把”过滤器、Cookie/Session、JWT、阿里云 OSS”归成一列叫 JavaWeb 解决方案,而把 IOC/DI/AOP/事务管理归到 Spring framework 里? 要求:说出这两类技术的共同点,并解释 Mybatis 为什么单独占一列。
一级 · 思路:看”这些东西是谁提供的”——是 JavaWeb/HTTP/第三方世界的通用方案,还是 Spring 框架自己的核心能力 二级 · 角度:过滤器来自哪个规范?Cookie/Session 来自哪套协议?JWT 是标准还是框架?OSS 是谁的服务?IOC/DI/AOP/事务管理又是谁的能力? 三级 · 骨架:JavaWeb 解决方案 = ______ 提供的通用方案;Spring framework = ______ 自己的核心能力;Mybatis 是 ______ 框架,SpringBoot 只是帮它做 ______
JavaWeb 解决方案这一列的共同点是”通用方案,不靠 Spring”:过滤器来自 Servlet 规范(JavaWeb 三大组件之一),Cookie/Session 来自 HTTP 的会话技术,JWT 是令牌标准(任何语言、任何框架都能用),阿里云 OSS 是第三方云服务。它们解决的是”请求进出的门""登录标记""文件存哪”这类通用问题,换成别的框架也还是这几样东西。 Spring framework 这一列是 Spring 框架自己的核心能力:管对象(IOC/DI)、管切面(AOP)、管事务(事务管理)——它们不是独立的工具,而是同一套容器提供的机制,所以画在一个框里。 Mybatis 单独一列,是因为它是第三方的持久层框架:既不归 Servlet 规范管,也不是 Spring 的亲儿子,SpringBoot 只是通过自动配置把它集成进来(所以图上的 SpringBoot 底座横贯中间和右边两列)。
换成一句话:左边是”要用的方案”,中间是”框架的能力”,右边是”持久层框架”,下面是”把这一切装起来并跑起来的底座”。
2-3 为什么说 SpringBoot 是这张图的”底座”?它自己在图上不写业务,到底做了什么? 要求:至少说出两件它替我们做的事,并解释”底座”这个位置的含义。
一级 · 思路:回想只写了两行依赖坐标的 pom,以及启动日志里那句 Tomcat started on port(s): 8080
二级 · 角度:依赖是谁带进来的(起步依赖 + 依赖传递)?那么多配置是谁配好的(自动配置)?Web 服务器是装出来的还是依赖带进来的(内嵌 Tomcat)?
三级 · 骨架:SpringBoot 的两大能力是 ______ 和 ______;再加上 ______,所以一个 ______ 方法就能把应用跑起来
因为其他技术(Spring framework、MyBatis、SpringMVC、拦截器、全局异常处理……)都是靠它组装起来、并被它拉起来的。 它做的事至少有三件:
spring-boot-starter-web,靠依赖传递把内嵌 Tomcat、SpringMVC、JSON 转换等一整套 jar 带进来(31 篇,本机实测的依赖树见过这件事);@Conditional 系列),这也是 application.yml 里往往只需要写几个数据源参数的原因(89 篇);main 方法就把服务器和应用一起拉起来,不用自己装 Tomcat、不用打 war 丢进 webapps(31 篇,实测启动日志里有 Tomcat started on port(s): 8080)。所以在图上它不是”第 N 层技术”,而是地基:地基不在业务链路上,但上面那些列都站在它上面。至于配置优先级、Bean 管理(88 篇)和自定义 starter(90 篇),讲的都是它是怎么做到这些的。
2-4 判断题:图上把”拦截器”和”全局异常处理”划进了 SpringMVC 那一格,而不是和 AOP、事务管理并排——这样分有道理吗?为什么? 要求:先判断,再说明这两个东西”web 层”的属性体现在哪里。
一级 · 思路:问自己一句——AOP 和事务管理是”给谁用都行”的能力,还是”只有处理请求时才用得上”的能力? 二级 · 角度:拦截器拦的是谁(控制器方法 vs 任意方法)?全局异常处理器是挂在什么类上的(普通 bean 还是 web 层的 advice)? 三级 · 骨架:有道理——拦截器拦的是 ______,全局异常处理处理的是 ______ 抛出的异常;它们只出现在 ______ 这一层,而 AOP/事务管理是 ______ 的能力
有道理。
Result 响应——没有请求就没有”响应格式”这回事,它同样只在 web 层生效(76 篇);所以 PPT 第 3 页它们还只是五个并排的词,到第 5 页就被收进 SpringMVC 那一格——同一排词按”只属于 web 层 / 属于整个 Spring”重新分了一次家。这也顺便解释了为什么拦截器排在 Filter 后面(一个是 SpringMVC 内部的机制,一个是 Servlet 规范的组件)。
3-1 把”新增员工”这条链路从浏览器讲到数据库,说清每个环节是谁在干活
背景:Tlias 的”新增员工”接口要接收一个表单(姓名、性别、入职时间、头像文件、多行工作经历),往 emp 和 emp_expr 两张表里写数据,还要记录一次操作日志;数据库里 emp.username 建了唯一约束,撞名要正常返回提示。
请按顺序回答(每一步都要点明”在哪一层 / 是图上哪一格”):
emp.username 的唯一约束,异常从哪一层抛出来、被谁接住、最终前端收到什么形状的响应?涉及知识点
| 知识点 | 在这里的应用 |
|---|---|
| 过滤器 Filter / 拦截器 Interceptor | 第 1 步——令牌校验的两道门 |
| SpringMVC(接收请求 / 响应数据) | 第 2、7 步——参数绑定与 JSON 响应 |
| IOC / DI | 第 3 步——Service、Mapper 都是容器注入的 |
| 事务管理 / AOP | 第 4 步——多表写入的一致性 + 操作日志 |
| MyBatis | 第 5 步——接口 + 注解/XML 映射,参数与结果自动处理 |
| 全局异常处理 | 第 6 步——异常统一转成 Result |
| 阿里云 OSS | 第 2 步——头像文件先上传到云存储,拿到 URL 再入库 |
| 三层架构 | 全程——请求的走向就是 Controller → Service → Dao → MySQL |
一级 · 思路:别按”类名”背,按”图上从外向里再原路返回”走——先两道门,再 SpringMVC 收参、Controller、Service(挂事务和 AOP)、MyBatis、MySQL,然后响应原路返回,异常有专门的出口
二级 · 方法:带的是 JWT 令牌(请求头里),先过 Filter 再过 Interceptor;控制器参数靠 @RequestParam / @RequestBody / MultipartFile 绑定;Service 和 Mapper 靠依赖注入拿到;多表写入用 @Transactional,切面用 AOP(记录操作日志);数据访问靠 MyBatis(@Insert / XML + #{});异常交给全局异常处理器转成 Result;返回对象由 SpringMVC 转 JSON
三级 · 骨架:① JWT → Filter → Interceptor(挡在 401)② MultipartFile + 普通参数 → Controller 方法 → 头像先上 ______ 拿 URL ③ Controller 注入 Service → Service 注入 Mapper ④ @Transactional 管两表 + 切面记日志 ⑤ MyBatis 发 SQL → MySQL ⑥ 唯一约束异常 → 全局异常处理器 → Result.error(...) ⑦ 返回对象 → JSON ⑧ 归类到四个区域,底座是 ______
1. 进门:请求在请求头里带着登录成功时拿到的 JWT 令牌。先过过滤器 Filter(Servlet 规范,JavaWeb 解决方案那一列),再过拦截器 Interceptor(SpringMVC 那一格)。令牌不合法的话,在过滤器(或拦截器)这一步就被挡住、直接返回 401,根本进不到 Controller——这正是”统一拦截”的意义:几十个接口不用各写一遍校验(83、84 篇)。
2. 收参:这一步是 SpringMVC 干的(图上”接收请求”)。普通表单字段靠 @RequestParam 一类的方式绑定到方法参数;头像文件用 MultipartFile 接收,按 72/73 篇的流程先上传到阿里云 OSS,拿回一个可访问的 URL;工作经历是多行数据,用对象/集合接收。
3. 调业务:Controller 不自己 new,而是用依赖注入拿容器创建好的 Service 对象;Service 里同样注入 Mapper。负责这两个词的是 IOC(创建权交给容器) 和 DI(容器把依赖注入进来),对应图上横在三层上方的前两格(38、39 篇)。
4. 业务里挂着的两件事:① 事务管理——emp 和 emp_expr 两张表要么一起成功、要么一起失败,方法上加 @Transactional,避免出现”基本信息存了、工作经历没存”的残缺数据(70、71 篇);② AOP——在方法前后自动织入公共逻辑,这里用来记录操作日志(谁、什么时候、做了什么),业务代码一行都不改(87 篇)。顺带 @Transactional 本身也是靠 AOP 代理实现的。
5. 落库:Service 往下调 Mapper(持久层/数据访问层),它是 MyBatis 的接口——只写接口方法 + 注解或 XML 映射,SQL 里的 #{} 负责参数封装、结果自动映射成对象、连接交给数据库连接池,不用手写 JDBC 的注册驱动/获取连接/释放资源那一套(51-55 篇)。SQL 最终发到 MySQL,数据落在 emp、emp_expr 两张表里。
6. 出错:唯一约束冲突的异常由 Dao/Service 这一层抛出,一路往上到 Controller;全局异常处理器(SpringMVC 那一格)把它接住,转成统一响应,前端收到的是
1{"code":0,"msg":"...","data":null}而不是 SpringBoot 默认的 {"timestamp","status","error","path"}(76 篇实测过默认结构)。
7. 回程:Controller 返回的 Result 对象由 SpringMVC(响应数据) 转成 JSON 写回浏览器——这一步和第 2 步是同一格的两个方向(34、35 篇)。
8. 归类:
application.yml 里的数据源参数、Bean 的创建与作用域,都归它管(31、56、88-90 篇)。一句话收尾:这条链路就是整张图在动——浏览器从左下角进,穿过两道门(Filter、Interceptor)进入 SpringMVC,沿着三层架构往下走到 MySQL,再原路带着 Result 回到浏览器;图上的每一个技术都对应链路上的一个环节,没有一个词是白画的。
如果你喜欢,那么欢迎来到我的世界!
了解更多暂未播放



"所有的相遇都是久别重逢。"—— 未知


