spring boot的启动原理以及mvc和ssm的解释

之前的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 会按顺序做这些事:

  1. 加载配置文件 application.properties(数据库连接、端口号等)
  2. 启动内嵌 Tomcat 服务器(默认 8080 端口)
  3. 初始化 Spring 容器,把所有 @Component 类(Controller/Service/Mapper)都创建好,放到容器里
  4. 启动 SpringMVC 的请求分发器(DispatcherServlet),准备接收 HTTP 请求
  5. 控制台输出 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-web
  • App.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 核心知识点总结

  1. 自动配置(不用写 XML)
  2. 内嵌 Tomcat(不用自己装服务器)
  3. 启动注解 @SpringBootApplication
  4. 三层架构:Controller + Service + Mapper
  5. 依赖注入 @Autowired
  6. 配置文件 application.yml
  7. RESTful 接口 + JSON 返回
  8. 约定大于配置

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 个注解合体:

  1. @Configuration → 配置
  2. @EnableAutoConfiguration自动配置
  3. @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

你只需要按规则写代码,不用配环境!

相关推荐
user_admin_god1 小时前
Spring Boot 3 + WebFlux 企业级流式SSE接口最佳实践
java·spring boot·后端
_Evan_Yao1 小时前
责任链模式在Agent编排中的应用:让AI Agent学会“踢皮球”
java·人工智能·后端·责任链模式
counting money1 小时前
MavenServlet项目文件上传
java·后端
庞轩px11 小时前
第七篇:Spring扩展点——如何优雅地介入Bean的创建流程
java·后端·spring·bean·aware·扩展点
ltl11 小时前
Q/K/V 三件套:把 Bahdanau 抽象成一个公式
后端
tongluowan00712 小时前
一个请求在Spring MVC 中是怎么流转的
java·spring·mvc
千叶风行13 小时前
Text-to-SQL 技术设计与注意事项
前端·人工智能·后端
阿kun要赚马内14 小时前
后端数据操作组合:Pydantic与ORM
后端·python·orm·sqlalchemy
花米徐14 小时前
技术洞察精选 | 2026年4月28日 — 5月4日
后端·python·flask