JAVA秒杀项目梳理(一)

张开发
2026/4/11 23:39:31 15 分钟阅读

分享文章

JAVA秒杀项目梳理(一)
Trae CN代码部分后端目录梳理一、整体架构配置层config自定义配置Redis、参数解析控制层controller接收请求、返回响应实体层entity对应数据库表结构数据访问层mapper数据库操作业务层service业务逻辑处理工具层utils通用工具方法视图对象层vo封装前端交互数据 / 响应码启动类SeckillApplication.java项目入口二、详细拆解1、配置类Config自定义规则RedisConfig.javaRedis 配置核心解决 Redis 默认序列化乱码问题Key 用 StringValue 用 JSON方便存储 / 读取对象。WebConfig.java UserArgumentResolver.java参数解析器秒杀系统的核心亮点实现 “控制器方法自动注入登录用户”无需每个方法手动解析 Cookie/Session。WebConfig.java注册参数解析器UserArgumentResolver.java自定义参数解析器核心逻辑控制器方法只要有TUser user参数就会触发该解析器解析器从 Cookie 中读取userTicket登录成功后写入的唯一凭证根据userTicket查询用户注入到方法参数中控制器方法直接判断user null即可知道是否登录无需重复解析Cookie/Session。2、控制器Controller接收请求 返回响应TGoodsController.java商品控制器TUserController.java用户控制器核心RestController所有方法返回 JSON无需手动加ResponseBodyRequestBody接收前端 POST 的 JSON 格式参数LoginVo依赖注入ITUserService业务逻辑全部交给服务层处理。3、实体层entity数据库表映射TGoods.java商品表核心与t_goods表一一对应MyBatis-Plus 通过注解关联数据库Lombok 简化代码。TUser.java用户表注意nickname作为主键密码存储为 MD5 加密后的值。4、数据层Mapper数据库操作TGoodsMapper.java商品 MapperTUserMapper.java用户 Mapper5、业务层service业务逻辑处理ITGoodsService.java商品服务接口ITUserService.java用户服务接口6、工具类utils通用方法CookieUtil.javaCookie 操作封装了 Cookie 的读取、写入、删除方法支持编码 / 解码处理域名、路径等细节简化控制器中 Cookie 操作。JsonUtil.javaJSON 序列化封装 Jackson 的 JSON 序列化 / 反序列化方法支持LocalDateTime日期时间的格式化yyyy-MM-dd HH:mm:ss解决 Java日期类型序列化问题。MD5Util.java密码加密UUIDUtil.java生成唯一凭证核心密码加密采用 “固定盐 用户盐” 双重加密避免明文存储防止彩虹表破解。7、视图对象VO前后端交互封装VOView Object是专门用于前后端交互的对象避免直接暴露实体类可灵活扩展字段。CommonResult.java通用响应体GoodsVo.java秒杀商品 VOLoginVo.java登录请求 VOResponseCode.java响应码枚举三、核心业务流程登录 查询秒杀商品1. 用户登录流程前端提交mobilepassword→TUserController.login()控制器调用ITUserService.login()服务层逻辑1加密前端密码inputPassToDbPass2查询数据库验证用户名 密码3生成userTicketUUID写入Redis/Session Cookie控制器返回CommonResult成功 / 失败。2. 查询秒杀商品流程前端请求/tGoods/toList→TGoodsController.toList(TUser user)UserArgumentResolver自动解析TUser user参数1从 Cookie 读取userTicket2调用userService.getByUserTicket()获取用户若user null返回SESSION_ERROR否则调用goodsService.findGoodsVo()查询秒杀商品列表返回CommonResult.success(goodsVoList)。

更多文章