一个用来练手的电商微服务项目:后端用 Spring Boot / Spring Cloud 拆成用户、商品、 购物车、订单四个服务,配 MySQL + Redis,前端是一个 Vue3 管理后台。
目标是把「微服务怎么拆、网关怎么鉴权、服务间怎么调、缓存放哪里」这些初中级常见问题, 用一套能跑起来的小项目串起来。
| 层 | 选型 |
|---|---|
| 框架 | Spring Boot 3.2、Spring Cloud 2023、Spring Cloud Alibaba 2023 |
| 网关 | Spring Cloud Gateway |
| 服务调用 | OpenFeign + LoadBalancer |
| 注册中心 | Nacos(可选,默认单机直连) |
| 持久化 | MyBatis-Plus + MySQL 8 |
| 缓存 | Redis(商品详情缓存、购物车) |
| 鉴权 | JWT(jjwt) |
| 前端 | Vue 3 + Vite + Element Plus + Pinia |
mini-mall-cloud
├── mall-common 公共模块:统一响应 / 异常 / JWT / 当前用户上下文
├── mall-gateway 网关:统一入口、JWT 鉴权、路由(:8080)
├── mall-user 用户服务:注册、登录、个人信息(:8081)
├── mall-product 商品服务:分类、商品、库存、详情缓存(:8082)
├── mall-cart 购物车服务:Redis Hash 存储(:8083)
├── mall-order 订单服务:下单、支付、取消(:8084)
└── mall-admin-web Vue3 管理后台
架构图和各模块职责见 docs/architecture.md。
# 1. 起 MySQL + Redis(会自动建表 + 灌示例数据)
cd deploy && docker compose up -d && cd ..
# 2. 起后端(也可以用 scripts/run-local.sh 一键起)
mvn -pl mall-user -am spring-boot:run
mvn -pl mall-product -am spring-boot:run
mvn -pl mall-cart -am spring-boot:run
mvn -pl mall-order -am spring-boot:run
mvn -pl mall-gateway -am spring-boot:run
# 3. 起管理后台
cd mall-admin-web && npm install && npm run dev完整步骤、环境变量、Nacos 接入方式见 docs/usage.md, 接口清单见 docs/api-reference.md。
注册 → 登录拿 token → 浏览商品 → 加购物车 → 下单 → 支付。 可以直接用 examples/api.http 一条条点着跑。
mvn -B verify # 后端:各模块单元测试(H2 + Mock)
cd mall-admin-web && npm run test:unit # 前端:VitestCI 会在每次 push 跑后端 + 前端两条流水线。