沉梦听雨的编程指南 沉梦听雨的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
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 Ul
  • 后端: Spring Boot + SSM + MyBatis Plus + Spring Cache + Redis + Sharding JDBC 读写分离 + 短信 SDK + Lombok
  • 部署: 前后端不分离jar 包部署或者 Nginx 部署前端

# 学习内容

  1. 为集中处理系统异常,自定义统一的错误码,并封装了 全局异常处理器,屏蔽了项目几余的报错细节、便于接口调用方理解和统一处理。
  2. 基于静态 ThreadLocal 封装了线程隔离的全局上下文对象,便于在请求内部存取用户信息,减少用户远程查询次数。
  3. 为兼容请求参数 date 类型的序列化,自定义 Jackson 对象映射器处理日期;并扩展 SpringMVC 的消息转换器,实现自动序列化。
  4. 自定义 MyBatis Plus 的 MetaObjectHandler,配合全局上下文实现写数据前的创建时间、用户 id 字段的自动填充。
  5. 遵循 Restful 设计规范编写接口,降低前后端接口沟通和理解成本。
  6. 为解决原生 Jdk 序列化器导致的缓存 key 值乱码问题,自定义 RedisTemplate Bean 的 Redis Key 序列化器为 StringRedisSerializer。
  7. 使用 Knife4j + Swagger 自动生成后端接口文档,并通过编写 ApiOperation 等注解补充接口注释,避免了人工编写维护文档的麻烦。
  8. 为省去重复编写用户校验的麻烦,基于 WebFilter 实现全局登录校验;并通过 AntPathMatcher 来匹配动态请求路径,实现灵活的可选鉴权。
  9. 为保证数据的完整性和一致性,使用 @Transactional 实现数据库事务,并配置 rollbackFor =Exception.class 来支持受检异常的事务回滚。
  10. 为提高 XX 信息页加载速度,基于 Spring Cache 注解 + Redis 实现对 XX 信息的自动缓存,大幅降低数据库压力的同时将接口响应耗时由 0.8s 减少至 50ms (建议数值再测一下)。
  11. 为降低开发成本,使用 MyBatis Plus 框架自动生成业务的增别改查重复代码,并使用 LambdaQueryWrapper 实现更灵活地自定义查询。
  12. 为降低用户注册成本、保证用户真实性,二次封装 阿里云 SDK 接入短信服务,并通过 Redis 来集中缓存验证码,防止单手机号的重复发送。
  13. 为提高数据库整体读写性能,配置 MySQL 主从同步,并使用 sharding-jdbc 实现业务无侵入的读写分离。
  14. 封装全局 Axios 请求实例,添加全局请求拦截和全局异常响应处理器,减少重复的状态码判断、提升项目可维护性。
上次更新: 2025/4/3 17:16:48
脚手架搭建
Redis实战笔记

← 脚手架搭建 Redis实战笔记→

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