学习项目第一天,先部署并了解项目commen块部分代码
发布时间:2026/8/23 6:17:05 作者:尧图编辑部 阅读量:1,286

一、前言本文汇总后端AImeeting项目通用基建核心能力涵盖项目分层架构、统一响应规约、自定义异常体系、登录用户自动注入、MyBatis-Plus持久层自动化、Redis缓存常量、分布式布隆过滤器防穿透等全套底层能力。二、知识目录Day1 核心大纲项目标准分层架构Controller / Service / Mapper 持久层 数据模型分层接口与继承核心语法interface / implements / extends 精准区分全局统一响应规约Result、Results 工具类设计思想企业级自定义异常体系抽象异常父类 三类业务异常 错误码接口/枚举登录用户自动注入机制CurrentUser 注解 参数解析器 UserContext 线程上下文MyBatis-Plus 全套持久层基建自动填充、分页插件、持久层配置Redis 缓存常量与分布式锁设计Redisson 布隆过滤器防缓存穿透双业务场景过滤器落地三、项目标准分层架构工程规范核心3.1 三层业务架构自上而下企业级 SpringBoot 项目强制职责解耦标准三层架构Controller 控制层Web层接收前端 HTTP 请求、参数校验、调用业务、返回统一 Result禁止写业务逻辑、禁止写 SQLService 业务层核心业务逻辑、事务控制、权限校验、异常抛出、数据组装是项目核心逻辑载体Mapper 持久层DAO层仅负责数据库 CRUD纯数据操作无业务判断、无事务、无异常处理3.2 数据模型分层杜绝字段混乱DOData Object数据库实体与表一一对应用于 Mapper - Service 流转包含数据库自动填充字段DTOData Transfer Object接收前端请求参数Controller 入参专用VOView Object视图返回对象脱敏、过滤敏感字段返回前端BOBusiness Object业务内部复杂组装对象仅 Service 内部流转3.3 持久化核心概念持久化将内存瞬时数据落地到磁盘数据库断电不丢失。持久层即专门负责数据库交互的 Mapper 层是数据落地的唯一入口。四、核心语法interface / implements / extends 终极区分是项目错误码、异常体系、接口规范的底层语法支撑面试高频考点。interface定义接口契约声明规范、不实现逻辑可多继承接口implements类实现接口一个类可多实现必须重写接口所有抽象方法错误码枚举核心用法extends类继承类、接口继承接口类只能单继承接口支持多继承核心落地所有业务错误码枚举统一implements IErrorCode实现面向接口统一规约。五、全局统一响应与错误码体系5.1 统一返回体设计Result核心响应实体统一字段code、msg、data前后端交互标准格式Results静态工具类提供 success / fail 快速构建方法杜绝重复 new 对象5.2 错误码分层设计IErrorCode顶层错误码接口约束所有错误码必须拥有 code()、message()BaseErrorCode全局公共错误码参数错误、系统异常、权限不足等通用场景业务自定义枚举AgentErrorCodeEnum模块独有业务错误码实现 IErrorCode实现全局统一、模块隔离错误码规范A 客户端异常、B 业务异常、C 远程调用异常结构化方便前端统一处理弹窗、重试、登录跳转。六、企业级三级自定义异常体系6.1 异常继承架构RuntimeException运行时异常→ AbstractException抽象父类→ 三类具体业务异常AbstractException抽象异常父类封装错误码、异常信息通用逻辑支持自定义消息覆盖默认错误提示ClientException客户端异常参数非法、未登录、权限不足ServiceException服务端业务异常数据不存在、业务规则不满足RemoteException微服务远程调用异常6.2 核心优势配合RestControllerAdvice全局异常处理器统一捕获所有自定义异常自动封装为标准 Result 返回代码整洁、异常统一、无重复异常处理逻辑。七、登录用户自动注入机制CurrentUser 全套原理7.1 注解定义CurrentUser仅作用于 Controller 方法参数运行时生效用于自动注入当前登录用户信息。支持三种注入类型Long 用户ID / String 用户名 / UserContext 完整上下文7.2 核心实现原理UserContext基于 ThreadLocal 存储当前线程登录用户信息线程隔离保证接口并发安全自定义参数解析器实现 HandlerMethodArgumentResolver识别 CurrentUser 注解根据参数类型自动赋值WebMvc 配置注册将解析器注入 SpringMVC 容器正式生效7.3 关键避坑请求结束必须清空 ThreadLocal否则线程池复用会出现用户上下文串号、内存泄漏。八、MyBatis-Plus 持久层全套基建MP 是 MyBatis 增强工具只增强不修改原生逻辑简化单表 CRUD兼容原生 XML 复杂查询。8.1 自动填充机制核心TableField(fill FieldFill.INSERT)仅插入填充TableField(fill FieldFill.INSERT_UPDATE)插入、更新均填充配套MyMetaObjectHandler元对象处理器自动填充创建时间、更新时间、逻辑删除标识无需业务手动 set。注解标记 处理器实现 Spring 托管三者缺一不可否则填充失效。8.2 持久层插件配置DataBaseConfiguration统一持久层配置注册 MybatisPlusInterceptor 核心拦截器开启分页插件。核心避坑未配置分页插件MP 分页查询 total 总条数为 0分页功能完全失效。多插件场景分页插件必须最后添加。8.3 逻辑删除统一默认 delFlag0未删除业务删除仅修改字段保留数据可追溯杜绝物理删除。九、Redis 缓存常量与分布式锁设计RedisCacheConstant统一管理项目所有 Redis Key杜绝硬编码统一前缀防冲突、方便维护。核心 Key 业务场景用户注册分布式锁防止并发重复注册分组创建分布式锁带 %s 占位符通过 String.format 动态拼接用户ID防止同用户重复创建分组用户登录缓存 Key存储 Token 关联用户上下文实现登录鉴权十、Redisson 布隆过滤器解决缓存穿透10.1 核心作用缓存穿透大量查询数据库不存在的数据绕过 Redis 直接打垮 MySQL。布隆过滤器前置拦截不存在绝对拦截、存在则放行校验。10.2 双过滤器落地场景用户注册布隆过滤器预估1亿数据、千分之一误判率拦截不存在手机号查询短链接分组布隆过滤器预估2亿数据、千分之一误判率拦截不存在分组ID查询10.3 核心特性与局限优点内存占用极低、查询速度 O(1)、分布式共享缺点存在假阳性误判、不支持删除元素、初始化参数固定不可动态修改十一、Day1 整体技术链路串联完整请求流程前端请求 → 网关/拦截器解析 Token →CurrentUser注入登录用户 → Controller 接收参数 → Service 业务校验/事务/异常处理 →布隆过滤器拦截空数据→ Redis 缓存查询 →MP持久层自动填充分页→ MySQL 数据库 → 统一 Result 响应返回十二、总结Day1 知识点覆盖后端项目底层所有基建能力工程分层规范、语法基础、统一异常与响应、用户上下文注入、MP持久层自动化、Redis缓存与分布式锁、布隆过滤器防穿透是所有 Java 企业级项目的通用标准架构也是面试核心高频考点。