🛠️ 技术栈: Java / Spring Boot / Flutter
1. 项目概览与开源地址
在电商系统开源生态中,大多数项目往往偏向 Web 端管理后台或单端小程序解决方案,真正同时具备原生移动端体验与企业级后端架构的全栈商城屈指可数。favour-mall 正是填补这一空白的项目——它以 Java + Spring Boot 构建高可用后端服务,以 Flutter 打造 Android/iOS 双端原生商城应用,为开发者提供了一套可直接投入生产环境的电商全栈参考实现。
该项目诞生于对现有开源商城"重后台、轻移动端"痛点的回应。许多传统电商开源项目(如 mall、litemall)虽然后端架构成熟,但移动端多依赖小程序或 H5 方案,难以满足用户对原生交互体验、离线缓存、推送通知等场景的需求。favour-mall 通过 Flutter 跨端框架统一 iOS/Android 代码库,配合 Spring Boot 后端提供的标准化 RESTful API,实现了真正意义上的全端覆盖。
> 项目开源地址:favour-mall
>
> 当前 GitHub Stars 1.6k+,开源协议为 MIT,社区处于稳步发展期,代码规范良好,文档相对完整,适合中大型电商项目的二次开发与架构参考。
—
2. 语言与核心技术栈深度剖析
favour-mall 采用前后端分离架构,技术栈选型清晰且贴合企业级开发规范。以下从后端、前端、数据存储、部署四个维度进行结构化拆解:
后端技术栈
| 组件 | 选型 | 说明 |
|——|——|——|
| 开发语言 | Java 17+ | 采用 LTS 版本,支持 Record、Sealed Class 等现代语法特性 |
| 核心框架 | Spring Boot 3.x | 自动配置 + Starter 机制,快速搭建 RESTful API 服务 |
| ORM 框架 | MyBatis-Plus | 简化 CRUD 操作,支持条件构造器与分页插件 |
| API 规范 | Spring MVC + Jackson | 统一响应封装(Result<T>),全局异常处理(@ControllerAdvice) |
| 安全框架 | Spring Security + JWT | 无状态认证,支持角色权限控制与接口级鉴权 |
| 参数校验 | Bean Validation (JSR-380) | 统一 DTO 校验,减少业务层冗余判断 |
| 工具库 | Hutool / Lombok | 简化开发,提升代码可读性 |
前端技术栈(Flutter 移动端)
| 组件 | 选型 | 说明 |
|——|——|——|
| 跨端框架 | Flutter 3.x | 一套代码编译为 Android/iOS 原生应用 |
| UI 组件库 | Material Design + Cupertino | 双平台原生风格适配 |
| 状态管理 | Provider / Riverpod | 轻量级响应式状态管理,适合中大型应用 |
| 网络请求 | Dio | 支持拦截器、多域名配置、文件上传下载 |
| 路由管理 | go_router | 声明式路由,支持深链接与权限路由守卫 |
| 本地存储 | SharedPreferences / Hive | 用户偏好设置与离线数据缓存 |
| 构建工具 | Flutter CLI + pubspec.yaml | 标准 Flutter 工程结构,依赖版本锁定 |
数据存储与缓存
– 关系型数据库:MySQL 8.0+,采用 InnoDB 引擎,核心表(用户、商品、订单)建立合理索引,支持分库分表扩展
– 缓存层:Redis 7.x,用于热点商品缓存、Session 存储、分布式锁实现
– 消息队列:可选集成 RabbitMQ / Kafka,用于订单异步处理、库存扣减、消息推送等场景
– 文件存储:支持本地存储与 OSS(阿里云 OSS / 腾讯云 COS)对象存储,图片资源 CDN 加速
部署与基础设施
| 基础设施 | 支持情况 |
|———-|———-|
| Docker | 提供 docker-compose.yml,一键启动后端 + MySQL + Redis |
| Kubernetes | 支持 Helm Chart 部署,适合集群化生产环境 |
| Nginx | 反向代理配置,支持 HTTPS 与负载均衡 |
| CI/CD | 可集成 GitHub Actions / Jenkins,实现自动化构建与部署 |
—
3. 核心功能与业务模块拆解
favour-mall 覆盖了电商系统的核心业务链路,功能模块划分清晰,业务价值明确:
用户体系模块
– 注册/登录:手机号验证码登录、邮箱注册、第三方 OAuth(微信/Google)
– 用户信息管理:个人资料编辑、收货地址管理、头像上传
– 权限控制:基于 RBAC 模型,区分普通用户、VIP 用户、管理员角色
商品管理模块
– 商品分类:多级分类树结构,支持标签与筛选维度
– 商品详情:SKU 规格管理、图片轮播、详情富文本、库存与价格
– 商品搜索:支持关键词搜索、分类筛选、价格区间、排序(销量/价格/新品)
– 商品收藏:用户收藏列表与取消收藏操作
订单流程模块
– 购物车:商品数量调整、规格选择、批量结算
– 订单创建:地址选择、支付方式、优惠码抵扣、库存预占
– 订单状态机:待付款 → 已付款 → 发货中 → 已完成 → 已取消,状态流转清晰
– 订单查询:多条件筛选(状态、时间、关键词),支持订单详情与物流追踪
支付与营销模块
– 支付集成:微信支付、支付宝、PayPal(国际化支持)
– 优惠券系统:满减券、折扣券、新人券,支持领取与使用规则配置
– 秒杀活动:倒计时、库存预扣、防超卖机制(Redis + 分布式锁)
管理后台模块(Web)
– 商品管理:上架/下架、规格编辑、库存管理、分类维护
– 订单管理:订单列表、发货操作、退款处理、物流跟踪
– 用户管理:用户列表、角色分配、操作日志
– 数据看板:销售额统计、订单趋势、用户增长图表
—
4. 技术架构亮点与二次开发优势
架构设计亮点
1. 前后端彻底分离,职责清晰
后端仅负责 API 提供与业务逻辑处理,不耦合任何前端渲染逻辑;Flutter 移动端通过标准化 RESTful 接口与后端通信,双方可独立迭代、独立部署。这种架构降低了耦合风险,便于团队分工协作。
2. 模块化后端设计,易于扩展
Spring Boot 采用多模块 Maven 工程结构,按业务域划分模块(如 favour-mall-user、favour-mall-product、favour-mall-order),各模块通过 Spring 依赖注入实现解耦。新增业务模块时,只需遵循现有模块规范即可无缝接入。
3. 统一响应与异常处理机制
后端通过 Result<T> 统一封装 API 响应体,包含 code、message、data 三个字段;全局异常处理器(GlobalExceptionHandler)捕获业务异常与系统异常,返回标准化错误信息,避免敏感信息泄露。
4. Flutter 端工程化规范
移动端采用 lib/ 目录按业务模块划分(features/、core/、widgets/、services/),配合 go_router 实现路由统一管理,代码结构清晰,便于团队协作与后续维护。
二次开发优势
– API 文档完善:后端集成 SpringDoc OpenAPI,自动生成 Swagger 接口文档,降低前后端联调成本
– 数据库设计合理:核心表结构注释完整,索引设计考虑查询性能,便于理解业务逻辑
– 代码注释规范:关键业务逻辑配有中文注释,降低阅读门槛
– 配置外部化:通过 application.yml 集中管理配置项,支持多环境(dev/test/prod)切换
– 插件化扩展点:支付、物流、营销等模块预留扩展接口,可通过实现接口快速接入第三方服务
—
5. 快速上手、部署实战与项目选型建议
环境依赖要求
| 组件 | 最低版本 | 推荐版本 |
|——|———-|———-|
| JDK | 11 | 17+ |
| Maven | 3.6+ | 3.8+ |
| MySQL | 5.7 | 8.0+ |
| Redis | 6.0 | 7.x |
| Flutter SDK | 2.0 | 3.x |
| Node.js | 14+ | 18+(Flutter 依赖) |
本地运行步骤
后端启动:
# 1. 克隆项目
git clone https://github.com/favour/favour-mall.git
cd favour-mall
# 2. 导入数据库
mysql -u root -p < sql/favour_mall.sql
# 3. 修改配置(application.yml)
# 配置数据库连接、Redis 地址等
# 4. 编译运行
mvn clean package -DskipTests
java -jar favour-mall-backend/target/favour-mall-*.jar
Flutter 移动端运行:
# 1. 进入移动端目录
cd favour-mall-flutter
# 2. 获取依赖
flutter pub get
# 3. 配置后端 API 地址(lib/core/config/api_config.dart)
# 将 baseUrl 修改为本地后端地址
# 4. 运行应用
flutter run
Docker 一键部署
# docker-compose.yml 核心配置
version: '3.8'
services:
backend:
image: favour-mall-backend:latest
ports:
- "8080:8080"
environment:
- SPRING_PROFILES_ACTIVE=prod
- DB_HOST=mysql
- REDIS_HOST=redis
depends_on:
- mysql
- redis
mysql:
image: mysql:8.0
environment:
- MYSQL_ROOT_PASSWORD=root123
- MYSQL_DATABASE=favour_mall
volumes:
- mysql_data:/var/lib/mysql
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
mysql_data:
# 启动所有服务
docker-compose up -d
# 查看日志
docker-compose logs -f backend
项目选型建议
favour-mall 最适合以下场景:
1. 中大型电商项目二次开发:架构成熟、模块清晰,可作为企业级电商系统的起点
2. Flutter 移动端开发学习:代码规范、注释完整,是学习 Flutter 电商实战的优质参考
3. Java 后端技术栈实践:Spring Boot + MyBatis-Plus + Spring Security 的组合具有代表性
4. 全栈架构参考:前后端分离 + 跨端移动开发的完整实践
不推荐场景:
– 仅需轻量级小程序商城(可考虑 litemall)
– 多商户 B2B2C 平台(可考虑 shopro、mall4j)
– 跨境电商独立站(可考虑 Saleor、Medusa)
—
结语
favour-mall 以 Java + Spring Boot 构建稳健后端,以 Flutter 打造原生移动体验,在开源电商领域提供了难得的全栈参考实现。其模块化设计、规范化的代码结构、完善的部署方案,使其成为企业级电商系统二次开发的优质起点。对于希望深入理解全栈电商架构的开发者而言,favour-mall 值得深入研究与实践。
• Git 克隆命令:
git clone https://github.com/favour/favour-mall.git





暂无评论内容