Secondskill 是基于 SpringBoot 构建的秒杀系统,基本实现了从用户注册、登录,到商品展示,到订单管理,到商品秒杀的整个流程。
来源于慕课网实战课程 SpringBoot构建电商基础秒杀项目,我尽可能保证与授课代码一致,在个别地方稍作修改。
如果刚开始看视屏就参考代码,会有很多地方不一致,是因为授课老师会在后期对代码不断优化。
- idea 2017
- Java 8 (代码中使用到了lambda表达式)
- Mysql 5.7 (代码使用到了事务,需要存储引擎为InnoDB)
- Spring-boot 1.5.2.RELEASE
- mysql-connector 5.1.22
- druid 1.1.3
- commons-lang3
- hibernate-validator
- Metronic (使用到了该框架,不过主要用到css)
- jQuery
- HTML
- 确保已经启动了Mysql
- 导入
seckill.sql
文件:source seckill.sql
- 在idea中运行
App.class
访问 http://localhost:9090/login.html 查看是否正常。
这个项目最令人激动就是这个包结构了,活脱脱一个大型项目的感觉。
secondkill
|- java
| App------------------------- 启动类
| |- controller------------- 控制层,restful接口
| | |- viewobject--------- 控制层模型,用户前端显示
| |- dao-------------------- 数据访问层,只有接口定义,代码由插件生成
| |- dataobject------------- 数据层模型,代码由插件生成
| |- error------------------ 统一错误处理
| |- response--------------- 归一化结果集
| |- service---------------- 服务层,只有接口定义
| | |- impl--------------- 服务层实现
| | |- model-------------- 服务层模型
| |- util------------------- 工具类
| |- validator-------------- 统一校验器
|- resources
| |- mapping---------------- mybatis映射文件
| |- static----------------- 前端代码
| | application.yml--------- 配置文件
| | mybatis-generator.xml--- mybatis生成器配置文件
| | seckill.sql------------- 数据库文件
- 用户登录
- 用户注册逻辑实现
- 用户详细信息填写
- 用户密码分表、加密存储
- 创建一个商品
- 商品列表信息浏览
- 商品详细信息浏览
- 商品订单 ID 生成策略
- 商品订单生成
- 秒杀活动未开始
- 秒杀活动进行中
- 秒杀活动已结束
http://localhost:9090/getotp.html
http://localhost:9090/register.html
http://localhost:9090/login.html
http://localhost:9090/listitem.html
http://localhost:9090/detail.html?id=3
http://localhost:9090/detail.html?id=3
http://localhost:9099/promo.html?id=3
http://localhost:9099/promo.html?id=3
http://localhost:9099/promo.html?id=2
- 使用SpringBoot + MyBatis 开发Java web项目
- 电商秒杀系统的基本实现流程
- 该项目的分层**可以直接运用到实际生产中
- 用户模块花了很多心思在分表的处理,安全性考虑周密
- 商品模块热点数据的处理思路
- 订单模块处理流程,事务的处理
- 秒杀模块需要对前期准备做大幅度修改,侵入性过高
- 容量问题
- 水平扩展
- 查询效率低下
- 库存行锁
- 下单需要操作太多