沉梦手记 沉梦手记
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 数据库基础
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • 网络通信
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Axios入门
  • Vue Router入门
  • Pinia入门
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 运维与部署
  • 音视频处理
  • 随笔
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 数据库基础
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • 网络通信
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Axios入门
  • Vue Router入门
  • Pinia入门
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 运维与部署
  • 音视频处理
  • 随笔
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)
  • 脚手架搭建
  • 瑞吉外卖

    • 学习笔记
      • 项目介绍
      • 技术栈
      • 学习内容
    • 项目技术亮点
  • 黑马点评

  • vue-blog

  • 沉梦接口开放平台

  • 用户中心

  • 聚合搜索平台

  • 仿12306项目

  • 壁纸小程序项目

  • RuoYi-Vue

  • 项目笔记
  • 瑞吉外卖
沉梦听雨
2023-06-13
目录

学习笔记

# 瑞吉外卖项目学习

# 项目介绍

完整的前后端不分离全栈外卖项目,包括用户前台 APP 和管理员后台。

视频地址:https://www.bilibili.com/video/BV13a411q753/ (opens new window)

# 技术栈

  • 前端:原生 HTML + 渐进式 Vue + Axios + Element UI
  • 后端:Spring Boot + SSM + MyBatis Plus + Spring Cache + Redis + ShardingSphere-JDBC 读写分离 + 短信 SDK + Lombok
  • 部署:前后端不分离 jar 包部署,或 Nginx 部署前端

# 学习内容

  1. 全局异常处理器:为集中处理系统异常,自定义统一的错误码,并封装全局异常处理器,屏蔽了项目冗余的报错细节,便于接口调用方理解和统一处理。

  2. 全局上下文对象:基于静态 ThreadLocal 封装了线程隔离的全局上下文对象,便于在请求内部存取用户信息,减少用户远程查询次数。

  3. 日期序列化:为兼容请求参数 Date 类型的序列化,自定义 Jackson 对象映射器处理日期;并扩展 SpringMVC 的消息转换器,实现自动序列化。

  4. 字段自动填充:自定义 MyBatis Plus 的 MetaObjectHandler,配合全局上下文实现写数据前的创建时间、用户 ID 字段的自动填充。

  5. RESTful 接口:遵循 RESTful 设计规范编写接口,降低前后端接口沟通和理解成本。

  6. Redis Key 序列化:为解决原生 JDK 序列化器导致的缓存 Key 值乱码问题,自定义 RedisTemplate Bean 的 Redis Key 序列化器为 StringRedisSerializer。

  7. 接口文档:使用 Knife4j + Swagger 自动生成后端接口文档,并通过编写 ApiOperation 等注解补充接口注释,避免了人工编写维护文档的麻烦。

  8. 全局登录校验:为省去重复编写用户校验的麻烦,基于 WebFilter 实现全局登录校验;并通过 AntPathMatcher 来匹配动态请求路径,实现灵活的可选鉴权。

  9. 数据库事务:为保证数据的完整性和一致性,使用 @Transactional 实现数据库事务,并配置 rollbackFor = Exception.class 来支持受检异常的事务回滚。

  10. Spring Cache 缓存:为提高信息页加载速度,基于 Spring Cache 注解 + Redis 实现信息的自动缓存,大幅降低数据库压力的同时将接口响应耗时由 0.8s 减少至 50ms。

    注:上述耗时数据为参考值,建议在实际环境中重新测量。

  11. MyBatis Plus 增删改查:为降低开发成本,使用 MyBatis Plus 框架自动生成业务的增删改查重复代码,并使用 LambdaQueryWrapper 实现更灵活地自定义查询。

  12. 短信服务:为降低用户注册成本、保证用户真实性,二次封装阿里云 SDK 接入短信服务,并通过 Redis 来集中缓存验证码,防止单手机号的重复发送。

  13. 读写分离:为提高数据库整体读写性能,配置 MySQL 主从同步,并使用 ShardingSphere-JDBC 实现业务无侵入的读写分离。

  14. Axios 全局封装:封装全局 Axios 请求实例,添加全局请求拦截和全局异常响应处理器,减少重复的状态码判断、提升项目可维护性。

上次更新: 2026/10/10 17:43:40
脚手架搭建
项目技术亮点

← 脚手架搭建 项目技术亮点→

Theme by Vdoing | Copyright © 2023-2026 沉梦听雨 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式