Skip to content

Spring Boot企业级开发全体系笔记

面向应届生实习 · 10 章系统教程 · 多技术横向对比 · 企业实战项目 · 前沿生态拓展 · 面试硬核考点

Spring Boot

📚 全章导航 ​

学习建议

建议按顺序学习,每章配套代码示例和实操练习。基础好的同学可以直接跳到感兴趣的章节。

🔹 基础筑基篇 · 入门必备 ​

章节核心内容学习目标拓展亮点
第 1 章 · Spring Boot 开发入门环境搭建、起步依赖、自动配置原理、热部署、项目打包能独立搭建 Spring Boot 项目,理解核心概念Spring Boot 2/3 版本差异、Maven/Gradle 对比、GraalVM 原生打包
第 2 章 · Spring Boot 配置properties/yml 语法、配置绑定、多环境 Profile、配置优先级熟练掌握配置体系,能灵活管理多环境配置Nacos/Apollo 配置中心、敏感配置加密、配置中心选型
第 3 章 · Web 应用支持MVC 定制、三大组件、参数校验、跨域、文件上传、异常处理能独立开发 RESTful API,掌握 Web 开发核心技能RESTful 规范、全局异常封装、CORS 底层原理、接口版本管理
第 4 章 · 整合 Thymeleaf模板语法、常用属性、表达式、表单处理、页面布局能使用模板引擎开发服务端渲染页面前后端分离选型、Vue 对比、模板缓存优化、国际化

🔹 核心能力篇 · 进阶提升 ​

章节核心内容学习目标拓展亮点
第 5 章 · 数据访问MyBatis-Plus 实战、Spring Data JPA、Redis 基础、连接池掌握多种数据访问技术,能根据场景选型Hikari/Druid 对比、逻辑删除/乐观锁、缓存一致性、分页优化
第 6 章 · 整合缓存Spring Cache 注解、Ehcache 本地缓存、Redis 集中缓存掌握缓存技术,能设计合理的缓存方案缓存三大问题、多级缓存架构、热点 Key 治理、缓存预热
第 7 章 · 安全管理Spring Security 认证授权、自定义登录、会话管控、CSRF掌握安全框架,能实现完整的权限控制Shiro/Sa-Token 对比、JWT 无状态鉴权、RBAC 模型、OAuth2
第 8 章 · 消息服务RabbitMQ 六大模式、生产者消费者、消息持久化掌握消息队列,能实现异步解耦削峰RocketMQ/Kafka 选型、消息幂等性、死信队列、积压处理
第 9 章 · 任务调度和邮件异步任务、Schedule 定时任务、Quartz 框架、邮件发送掌握任务调度和邮件发送,能处理定时任务XXL-Job 分布式调度、集群防重复、邮件模板、任务分片

🔹 项目实战篇 · 综合应用 ​

章节核心内容项目亮点可写进简历
第 10 章 · 瑞吉外卖实战项目员工/菜品/套餐/订单全业务、事务控制、DTO 设计、ThreadLocal完整 B 端 + C 端业务、MyBatis-Plus + Redis、全局异常、自动填充✅ 可直接作为简历核心项目经历

⚖️ 技术选型对比矩阵 ​

企业开发不是只会一种技术就行,要懂得根据场景选择最合适的方案。

数据访问层选型 ​

技术类型SQL 控制开发效率性能学习曲线适用场景
MyBatis-Plus半 ORM⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐国内主流,业务复杂 SQL 多
Spring Data JPA全 ORM⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐简单 CRUD、快速原型
JdbcTemplate轻量封装⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐极致性能、特殊需求

安全框架选型 ​

框架功能丰富度易用性Spring 集成社区生态国内流行度推荐场景
Spring Security⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐Spring 技术栈、复杂权限
Sa-Token⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐快速开发、国内项目
Apache Shiro⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐老项目、轻量需求

消息队列选型 ​

MQ性能延迟功能丰富度运维复杂度生态推荐场景
RabbitMQ万级微秒级⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐中小项目、功能需求多
RocketMQ十万级毫秒级⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐电商、金融、国内大厂
Kafka百万级毫秒级⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐大数据、日志、流处理

缓存选型 ​

缓存速度容量分布式持久化功能适用场景
Caffeine极快小(内存)❌❌⭐⭐⭐本地缓存、热点数据
Redis快大✅✅⭐⭐⭐⭐⭐分布式缓存、全场景
Ehcache快中⭐✅⭐⭐⭐⭐传统项目、Hibernate

🚀 前沿拓展专题 ​

课本之外的硬核知识,拉开差距的关键。

🔬 Spring Boot 3.x 新特性 ​

  • JDK 17+ 基线:虚拟线程、密封类、模式匹配等新特性
  • Jakarta EE 迁移:javax → jakarta 命名空间全面切换
  • GraalVM 原生镜像:AOT 编译,毫秒级启动,内存占用降低 80%
  • 可观测性增强:统一的 Observability API,集成 Micrometer
  • 问题详情支持:RFC 7807 Problem Details 规范

🧵 虚拟线程(Project Loom) ​

  • 什么是虚拟线程:JVM 级轻量线程,一个 OS 线程可承载数万虚拟线程
  • 对 Spring Boot 的影响:同步代码获得异步性能,不用再写响应式
  • 开启方式:spring.threads.virtual.enabled=true 一行配置开启
  • 适用场景:IO 密集型应用、高并发接口、微服务网关

⚡ 响应式编程 ​

  • Spring WebFlux:响应式 Web 框架,非阻塞 IO
  • Reactor:响应式流实现,Mono/Flux 操作符
  • R2DBC:响应式数据库访问
  • 适用场景:高并发网关、流处理、实时推送

📊 可观测性体系 ​

  • Metrics(指标):Prometheus + Grafana,系统健康度监控
  • Logging(日志):ELK / Loki,集中式日志收集
  • Tracing(链路追踪):SkyWalking / Jaeger,分布式链路追踪
  • 三者关系:Metrics 发现问题 → Tracing 定位问题 → Logging 排查细节

🐳 容器化与云原生 ​

  • Docker:容器化部署,环境一致性
  • Kubernetes:容器编排,自动扩缩容、滚动更新
  • Service Mesh:Istio 服务网格,流量治理
  • Serverless:函数计算,按需付费

🎯 面试高频考点 ​

应届生后端面试高频题,每道都要掌握。

🔥 Spring Boot 原理篇 ​

  1. Spring Boot 自动配置原理是什么?

    • @EnableAutoConfiguration → 加载 META-INF 中的自动配置类 → 条件装配 → 属性绑定
    • 关键组件:AutoConfigurationImportSelector、@Conditional 系列注解
  2. Spring Boot 启动流程?

    • 创建 SpringApplication → 准备环境 → 打印 Banner → 创建容器 → 刷新容器 → 执行 Runner
  3. starter 起步依赖原理?

    • 就是一个 pom.xml,打包了某个场景需要的所有依赖
    • 版本由 parent 统一管理,避免版本冲突
  4. Spring Boot 如何实现热部署?

    • spring-boot-devtools + 类加载器机制
    • 静态资源不重启,Java 代码变更重启

🔥 缓存篇 ​

  1. 缓存穿透、击穿、雪崩的区别和解决方案?

    • 穿透:查不存在的数据 → 缓存空值 / 布隆过滤器
    • 击穿:热点 key 过期 → 互斥锁 / 永不过期
    • 雪崩:大量 key 同时过期 / Redis 挂了 → 随机过期 / 多级缓存 / 高可用
  2. 缓存和数据库怎么保证一致性?

    • Cache Aside Pattern:先更新数据库,再删除缓存
    • 为什么删而不是更:并发安全、避免无效更新
    • 最终一致性方案:延时双删、订阅 binlog

🔥 消息队列篇 ​

  1. 为什么要用消息队列?

    • 异步、解耦、削峰填谷
  2. 怎么保证消息不丢失?

    • 生产者:确认机制、重试、本地消息表
    • Broker:持久化、集群多副本
    • 消费者:手动 ACK、重试、死信队列
  3. 怎么保证消息幂等性?

    • 唯一 ID + 去重表
    • 数据库唯一键
    • Redis set 去重
    • 业务状态判断

🔥 数据库篇 ​

  1. MyBatis 一级缓存和二级缓存的区别?

    • 一级缓存:SqlSession 级别,默认开启
    • 二级缓存:Mapper 级别,需要手动开启
  2. 事务的传播行为有哪些?

    • REQUIRED、REQUIRES_NEW、NESTED 等 7 种
    • 重点理解前三种的区别和使用场景

🔥 分布式篇 ​

  1. 分布式锁怎么实现?

    • Redis:SETNX + 过期时间 + Lua 脚本
    • Zookeeper:临时顺序节点
    • Redisson:可重入锁、看门狗机制
  2. 分布式事务怎么解决?

    • 2PC / 3PC
    • TCC
    • 本地消息表
    • 最终一致性(MQ)

面试建议

  • 原理类问题:先说结论,再讲过程,最后举例子
  • 对比类问题:分点对比,最后说选型建议
  • 项目类问题:STAR 法则(背景-任务-行动-结果)

⚠️ 新手避坑指南 ​

这些坑,90% 的新手都踩过。

🐛 常见坑点 Top 10 ​

坑点现象原因解决方案
AOP 同类调用失效同类方法调用,事务/缓存不生效AOP 基于代理,同类调用不走代理注入自己 / 用 AopContext / 拆分类
Long 类型前端精度丢失后端 Long ID,前端拿到后几位变 0JS Number 最大安全整数是 2^53转字符串 / Jackson 序列化配置
事务不回滚抛了异常但事务没回滚异常类型不对 / 方法不是 public / 同类调用检查异常类型、方法修饰符、代理问题
配置不生效改了配置但没效果优先级问题 / 拼写错误 / 没重启用 debug 模式看生效配置
跨域不生效配置了 CORS 还是跨域拦截器顺序问题 / 预检请求被拦截用 CorsFilter / 调整顺序
Redis 序列化乱码Redis 里的 key 是 \xAC\xED 这种默认 JDK 序列化配置 Jackson2JsonRedisSerializer
文件上传大小限制上传大文件报错默认 1MB 限制配置 spring.servlet.multipart
循环依赖启动报错 BeanCurrentlyInCreationA 依赖 B,B 依赖 A用 @Lazy / 重构代码 / 三级缓存
日期格式化问题前端日期格式不对 / 时区不对Jackson 默认格式 / 时区问题配置 date-format / time-zone
静态资源 404静态资源访问不到路径不对 / 拦截器拦截了检查静态资源位置、排除拦截

💡 避坑心法 ​

  1. 遇到问题先看日志:日志是最好的老师,异常堆栈里 90% 的答案
  2. 善用 Debug 模式:启动加 --debug,看自动配置报告
  3. 不要想当然:配置不生效就去验证,不要"我以为"
  4. 版本要对应:不同版本 API 可能不一样,看对应版本文档
  5. 先搜再问:99% 的问题别人都遇到过,先 Google / 百度

💡 应届生实习指南 ​

📅 学习路线规划 ​

第一阶段:基础入门(2 周)

  • 第 1-4 章,掌握 Spring Boot 基础和 Web 开发
  • 目标:能独立写 CRUD 接口,满足实习基本要求
  • 产出:一个简单的管理后台 Demo

第二阶段:核心进阶(3 周)

  • 第 5-9 章,掌握数据访问、缓存、安全、MQ、定时任务
  • 目标:能独立开发业务模块,理解各种技术的使用场景
  • 产出:给 Demo 加上缓存、权限、消息队列等功能

第三阶段:项目实战(2 周)

  • 第 10 章,完整复现瑞吉外卖项目
  • 目标:有一个能写进简历的完整项目
  • 产出:瑞吉外卖项目,部署上线

第四阶段:拓展提升(持续)

  • 前沿专题、面试准备、简历优化
  • 目标:拉开和其他应届生的差距
  • 产出:面试题库、优化后的简历

📝 简历项目包装 ​

项目名称:瑞吉外卖 — 基于 Spring Boot 的外卖点餐系统

技术栈:

  • 后端:Spring Boot + MyBatis-Plus + Spring Security + Redis + RabbitMQ
  • 数据库:MySQL 8.0 + Druid 连接池
  • 工具:Lombok、Hutool、EasyExcel

项目描述:

  • 完整的外卖点餐系统,包含后台管理端和用户移动端
  • 实现了员工管理、分类管理、菜品管理、套餐管理、订单管理等模块
  • 使用 Redis 缓存热点数据,优化查询性能
  • 使用 Spring Security 实现认证授权,基于 RBAC 权限模型
  • 使用消息队列实现异步下单、短信通知等功能

项目亮点(一定要写):

  • ✅ 基于 Spring Boot 2.7.x + MyBatis-Plus 开发,单表 CRUD 零 SQL
  • ✅ 统一返回结果 + 全局异常处理,接口规范统一
  • ✅ Redis 缓存菜品、套餐数据,QPS 提升 5 倍
  • ✅ 基于 RBAC 的权限控制,细粒度到按钮级别
  • ✅ 使用 ThreadLocal 实现用户上下文传递
  • ✅ 自动填充创建人、更新人、创建时间、更新时间
  • ✅ DTO 模式解决前后端数据传输问题
  • ✅ 全局跨域配置,支持前后端分离开发

注意

项目要真的做过,面试会深挖细节。不要写自己不懂的技术,一问就露馅。

🏢 实习生存指南 ​

入职第一周:

  • 熟悉项目结构、技术栈、开发规范
  • 跑通项目,能本地启动
  • 熟悉团队协作工具(Git、Jira、飞书等)
  • 多问多记,不要不懂装懂

代码提交规范:

  • 提交前自己 review 一遍
  • 遵循团队代码规范
  • 提交信息写清楚改了什么
  • 不要提交无关的代码

沟通技巧:

  • 遇到问题先自己查,查不到再问
  • 问问题说清楚:什么问题、报错信息、你做了什么尝试
  • 不要怕问问题,但也不要什么都问
  • 主动汇报进度,让 mentor 知道你在做什么

快速成长秘诀:

  • 多看别人写的代码,学习好的写法
  • 主动找活干,不要等安排
  • 多做总结,写技术博客
  • 关注技术趋势,保持学习

📊 学习进度追踪 ​

可以在这里记录自己的学习进度,打勾打卡。

  • [ ] 第 1 章 Spring Boot 开发入门
  • [ ] 第 2 章 Spring Boot 配置
  • [ ] 第 3 章 Web 应用支持
  • [ ] 第 4 章 整合 Thymeleaf
  • [ ] 第 5 章 数据访问
  • [ ] 第 6 章 整合缓存
  • [ ] 第 7 章 安全管理
  • [ ] 第 8 章 消息服务
  • [ ] 第 9 章 任务调度和邮件
  • [ ] 第 10 章 瑞吉外卖实战项目

📝 更新日志 ​

v2.0 · 2026-08-10 ​

  • ✨ 全面重构首页,增加技术对比矩阵、前沿专题、面试专区
  • ✨ 新增 9 大特性卡片,覆盖更全面
  • ✨ 新增应届生实习指南、简历包装建议
  • ✨ 新增新手避坑指南 Top 10
  • 📝 优化章节导航,增加学习目标和拓展亮点
  • 🎨 优化排版,更符合 VitePress 风格

v1.0 · 2026-08-08 ​

  • 🎉 首次发布,10 章完整教程
  • 🎉 瑞吉外卖完整实战项目
  • 🎉 企业级最佳实践

🤝 关于本笔记 ​

适用人群:

  • 计算机相关专业应届生、实习生
  • 有 Java 基础,想系统学习 Spring Boot 的开发者
  • 准备后端面试,需要系统性梳理知识的求职者

版本说明:

  • 主教程基于 Spring Boot 2.7.x(企业主流稳定版)
  • 额外拓展 Spring Boot 3.x 新特性
  • 所有代码示例均经过验证,可直接运行

学习建议:

  • 多动手,光看是学不会的
  • 每章学完做个小练习
  • 遇到问题先自己查,培养解决问题的能力
  • 学完一定要做项目,把知识串起来

💬 共勉:编程是个手艺活,靠的是积累。没有捷径,就是多练、多想、多总结。坚持下去,你会越来越强。


快速开始

准备好了吗?点击下方按钮,开始你的 Spring Boot 学习之旅!

基于 Vite 强力驱动 | 纯静态轻量托管