之前的StudentSystem系统以及满足了主流的Java开发技术栈
https://blog.csdn.net/m0_57891340/article/details/160948088?spm=1001.2014.3001.5501
- 后端:SpringBoot + MyBatis + MySQL
- 前端:Vue3 + Element Plus
- 架构:MVC + SSM + 前后端分离
我们结合这个项目再看一下相关流程和原理
首先第一个问题,这个项目是怎么跑起来的?
双击 StudentSystemApplication.java 运行@SpringBootApplicatio是项目启动总开关,SpringApplication.run():启动的核心
执行这行代码时,Spring Boot 会按顺序做这些事:
- 加载配置文件
application.properties(数据库连接、端口号等) - 启动内嵌 Tomcat 服务器(默认 8080 端口)
- 初始化 Spring 容器,把所有
@Component类(Controller/Service/Mapper)都创建好,放到容器里 - 启动 SpringMVC 的请求分发器(DispatcherServlet),准备接收 HTTP 请求
- 控制台输出
Started StudentSystemApplication,代表启动完成
第二个就是浏览器怎么请求,
当你在浏览器输入 http://localhost:8080/student/list,整个请求会经过这 5 层:

当前端点击前端 App.vue

访问地址:/student/list
1. 第 1 步:请求到达 Tomcat
- Tomcat 监听 8080 端口,收到请求后,把它交给 SpringMVC 处理
- 你看到的
Tomcat started on port 8080,就是它准备好接收请求的信号
2. 第 2 步:SpringMVC 分发请求
DispatcherServlet(SpringMVC 的核心)会解析请求地址/student/list- 它会扫描所有
@RestController类,找到@RequestMapping("/student")+@GetMapping("/list")对应的方法 - 这个过程叫「请求映射」,如果找不到对应的方法,就会返回 404
3. 第 3 步:Controller 接收请求,调用 Service
StudentController 里的方法被调用:接收 /list 请求 → 调用 service.list ()

Controller 只做两件事:接收请求、调用 Service、返回结果,不写业务逻辑
4. 第 4 步:Service 处理业务逻辑
StudentServiceImpl 实现了 StudentService 接口:调用 mapper.getAll ()

@Service:告诉 Spring,这个类是业务层组件,要放到容器里管理- Service 是业务逻辑的核心,比如数据校验、事务控制、调用 Mapper 操作数据库
5. 第 5 步:Mapper 执行 SQL,操作数据库
StudentMapper 是 MyBatis 的接口:去 MySQL 查所有学生

@Mapper:告诉 MyBatis,这个接口要生成代理对象,帮你执行 SQL- MyBatis 会根据你写的
@Select注解,自动执行 SQL,把查询结果封装成List<Student>对象
6. 第 6 步:数据原路返回,浏览器拿到结果
- 数据库返回的结果 → Mapper → Service → Controller
- Controller 把
List<Student>转成 JSON 格式 - SpringMVC 把 JSON 响应发给 Tomcat,Tomcat 再返回给浏览器
- 浏览器收到 JSON,前端 Vue 就可以渲染成表格了
关键组件表格
| 组件 | 位置 | 作用 | 注解 |
|---|---|---|---|
| 启动类 | com.baosight.StudentSystemApplication |
项目入口,启动 Spring Boot | @SpringBootApplication |
| 实体类 | entity/Student.java |
封装学生数据(id/name/age) | @Data(Lombok) |
| Mapper 接口 | mapper/StudentMapper.java |
定义数据库操作(增删改查) | @Mapper |
| Service 接口 | service/StudentService.java |
定义业务方法 | 无 |
| Service 实现类 | service/impl/StudentServiceImpl.java |
实现业务逻辑,调用 Mapper | @Service |
| Controller | controller/StudentController.java |
接收 HTTP 请求,返回响应 | @RestController |
| 配置文件 | resources/application.yml |
配置数据库、端口、MyBatis | 无 |
这个简单项目**= SSM 框架 + MVC 架构 + 前后端分离**
- SSM = 你项目用的技术全家桶
- MVC = 你项目的代码组织结构
- 前后端分离 = 你项目的交互方式
MVC = Model(模型) + View(视图) + Controller(控制器)
- V = 前端页面
- C = 接口控制器
- M = 业务 + 数据库
1. 项目里,MVC 分别对应什么?
👉 View(视图)= 前端 Vue3 项目
student-webApp.vue- 页面、表格、按钮、输入框
作用:给用户看、给用户点
👉 Controller(控制器)= 后端 @RestController
StudentController.java
作用:接收前端请求 → 调用业务 → 返回数据
👉 Model(模型)= 后端所有业务 + 数据
包括:
Student实体类Service业务层Mapper数据库层- MySQL 数据库
作用:处理逻辑、操作数据
三、从 SSM 角度看你的学生系统
SSM = Spring + SpringMVC + MyBatis
1. 三框架在你项目里分别干什么?
👉 Spring = 大管家
你项目里体现为:
@Service@Autowired@SpringBootApplication
作用: 创建对象、管理对象、自动注入、全局调度
👉 SpringMVC = 请求调度员(Web 层)
你项目里体现为:
@RestController@GetMapping@PostMapping@RequestMapping- 接收前端请求、返回 JSON
作用: 接收浏览器请求 → 找到对应方法 → 返回响应
👉 MyBatis = 数据库操作员(持久层)
你项目里体现为:
@Mapper@Select@Insert@Update@Delete
作用: 执行 SQL、操作 MySQL
ssm流程
前端请求
↓
【SpringMVC】接收请求 → StudentController
↓
【Spring】自动注入 StudentService
↓
Service 处理业务
↓
【Spring】自动注入 StudentMapper
↓
【MyBatis】执行 SQL
↓
MySQL 返回数据
↓
一层层返回 → Controller 返回 JSON
↓
前端展示
| 你的代码文件 | 属于 MVC | 属于 SSM | 作用 |
|---|---|---|---|
| App.vue/ Vue 项目 | View | 前端 | 给用户看的界面 |
| StudentController | Controller | SpringMVC | 接收请求、分发 |
| StudentService | Model | Spring | 业务逻辑 |
| StudentMapper | Model | MyBatis | 数据库操作 |
| Student | Model | 实体 | 封装数据 |
| MySQL | Model | 数据库 | 存数据 |
| SpringBoot | 全局 | 整合 SSM | 自动配置、启动 |
饭店 = 你的学生系统
- SpringMVC(Controller)= 服务员客人点菜,服务员记单
- Spring = 店长安排服务员、厨师、仓库管理员
- MyBatis = 仓库管理员去数据库(仓库)拿食材
- Service = 厨师处理业务逻辑(做菜)
- Vue 前端 = 菜单 + 用餐区
- MySQL = 仓库
六、最终终极总结(你一定要记住)
1. MVC 是架构(怎么组织代码)
- V:前端页面
- C:控制器(接收请求)
- M:业务 + 数据
2. SSM 是技术(用什么工具实现)
- SpringMVC:处理请求(C)
- Spring:管理对象(全局)
- MyBatis:操作数据库(M)
结合这个项目,我们看一下什么是spring boot重新理解一下
Spring Boot = 简化版 Spring + 自动配置 + 内置服务器 它的目的只有一个:让你不用写复杂配置,快速开发 Java 项目!
更简单的比喻
-
以前的 SSM:自己买零件 → 自己组装 → 自己接线 → 自己调试(要写一堆 XML、配 Tomcat、配 Spring、配 MVC)
-
Spring Boot :买现成整机 → 插电即用自动配好一切,你只写业务代码
Spring Boot 核心知识点总结
- 自动配置(不用写 XML)
- 内嵌 Tomcat(不用自己装服务器)
- 启动注解 @SpringBootApplication
- 三层架构:Controller + Service + Mapper
- 依赖注入 @Autowired
- 配置文件 application.yml
- RESTful 接口 + JSON 返回
- 约定大于配置
1. 自动配置(Auto Configuration)
**Spring Boot 最牛的功能!**你引入什么依赖,它就自动配什么:
- 引了
spring-boot-starter-web→ 自动配 SpringMVC + Tomcat - 引了
mysql-connector→ 自动配数据库 - 引了
mybatis-spring-boot→ 自动配 MyBatis
你不用写任何 XML!
2. 内嵌服务器(Tomcat 内置)
你项目启动时:不用自己装 TomcatSpring Boot 自带,运行 main 方法就自动启动!
你控制台看到的:Tomcat started on port 8080就是它在工作。
3. 启动类(@SpringBootApplication)
整个项目的总开关:
@SpringBootApplication
public class StudentSystemApplication {}
它 = 3 个注解合体:
@Configuration→ 配置@EnableAutoConfiguration→ 自动配置@ComponentScan→ 自动扫描所有类
4. 三层架构 + 注解(你项目正在用)
Spring Boot 最标准的结构:
1)Controller(接口层)
注解:@RestController作用:接收前端请求
2)Service(业务层)
注解:@Service作用:写逻辑
3)Mapper(数据库层)
注解:@Mapper作用:操作 MySQL
5. 依赖注入(@Autowired / @Resource)
你项目里的:
@Autowired
private StudentService studentService;
意思:Spring 自动帮你创建对象,不用自己 new
这就是 Spring 核心:IOC 控制反转、DI 依赖注入
6. 配置文件(application.yml/properties)
所有配置都在这里:
-
端口
-
数据库连接
-
MyBatis
-
日志
spring:
datasource:
url: jdbc:mysql://localhost:3306/student_system
7. 统一返回格式(JSON)
Controller 直接返回对象,Spring Boot 自动转 JSON:
@GetMapping("/list")
public Map<String, Object> list() {
return map;
}
前端 Vue 直接拿到数据,这就是 前后端分离。
8. 约定大于配置
Spring Boot 有默认规则:
- 端口默认 8080
- 配置文件默认叫 application
- 包自动扫描
- 不需要 web.xml
- 不需要 springmvc.xml
你只需要按规则写代码,不用配环境!