# mall is a Spring Boot and MyBatis shop that needs six backing services and three more repositories

> A Java e-commerce reference implementation split into seven Maven modules, with the admin and storefront front ends living in separate repositories and the version tags stopped moving in March 2024 while master kept committing.

**macrozheng/mall** — mall项目是一套电商系统，包括前台商城系统及后台管理系统，基于Spring Boot+MyBatis实现，采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。.

- Repository: https://github.com/macrozheng/mall
- Website: https://www.macrozheng.com/admin/
- Stars: 84,844 · Forks: 29,834
- Language: Java
- License: Apache-2.0
- Published: 2026-08-08 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/macrozheng-mall

## Seven Maven modules, and mall-demo exists only to hold the scaffolding

The module layout is the clearest statement of what the project is:

```
mall
├── mall-common -- 工具类及通用代码
├── mall-mbg -- MyBatisGenerator生成的数据库操作代码
├── mall-security -- SpringSecurity封装公用模块
├── mall-admin -- 后台商城管理系统接口
├── mall-search -- 基于Elasticsearch的商品搜索系统
├── mall-portal -- 前台商城系统接口
└── mall-demo -- 框架搭建时的测试代码
```

Two of those entries are scaffolding rather than product. mall-demo is described as test code written while the framework was being assembled, and mall-mbg is generated database access code from MyBatisGenerator rather than hand-written. What remains as the actual application is mall-admin for the back office, mall-portal for the storefront, mall-search for Elasticsearch-backed product search, plus mall-common and mall-security underneath both.

The consequence for a reader is that the module count overstates the amount of original code. Generated persistence and setup experiments make up two of the seven.

## The admin panel and the storefront are not in this repository

The Java tree here is API only. The back office interface is a separate project, mall-admin-web, and the customer-facing mobile web interface is mall-app-web. Both are linked from the header as their own repositories, and the demo pages are hosted elsewhere rather than run from this tree.

A microservice variant exists too, built on Spring Cloud Alibaba, and it is also a separate repository named mall-swarm. There is a fourth link, mall-learning, which is the tutorial material.

The consequence is that cloning this repository gives you services with nothing to call them from. To see anything in a browser you need the matching front-end clone, and to decide whether the monolith or the microservice layout suits you, you are choosing between two repositories rather than reading two modules.

## master is on Spring Boot 3.5 and JDK 17, dev-v2 is the JDK 8 branch

The branch split is stated in one line and it matters more than anything else in the setup notes. The master branch is based on Spring Boot 3.5 and JDK 17. The dev-v2 branch is based on Spring Boot 2.7 and JDK 8.

So the default branch you land on is not the branch for an older environment, and a team on JDK 8 has to know that before anything else. The two branches are not a stable and a preview pair either, they are the same application held at two different framework generations.

There is also a mirror on Gitee alongside the GitHub repository, which matters for anyone behind a network where GitHub access is slow or filtered. Nothing in the notes says which branch the mirror tracks, so treat it as a fallback rather than as an authoritative copy.

## Six services must already be running before a single endpoint answers

The technology table is where the real cost of this project sits. Beyond Spring Boot, Spring Security, MyBatis and Druid for the connection pool, the stack names Elasticsearch for search, Redis as in-memory data storage, MongoDB as a NoSQL database, RabbitMQ as a message queue, MinIO for object storage, and Nginx in front serving static resources. LogStash and Kibana are there for log collection and viewing, and Jenkins is listed for automated deployment.

That is a minimum of six backing services plus a reverse proxy before anything works. None of them is optional in the sense of being cosmetic: the search module is built on Elasticsearch, the security module on Spring Security, and the persistence layer on MyBatis with generated access code.

For anyone evaluating this, the honest question is not whether the code is good but whether they can stand up that dependency set. A developer laptop can, a fresh CI container cannot without a compose file or an image, and the repository root lists just a pom.xml alongside the seven module directories.

## The last release tag is v1.0.3 from March 2024, and master has moved on since

Three releases exist. v1.0.1 was tagged on 8 August 2020, v1.0.2 on 8 June 2022, and v1.0.3 on 1 March 2024. The last push to master is 15 September 2026.

So the tags stopped moving more than two years before the last commit, and the gap between them is not a dormant repository. Work has continued on master without a release. Anyone pinning to v1.0.3 gets code from March 2024, and anyone on master is on something no tag describes.

For a project whose main value is as a reference, that split is workable, since a reader usually wants the current branch rather than a release. For anyone who wants a versioned artefact to depend on or to compare against, the tags are stale and the branch is the only sensible starting point.

## The documentation is a Chinese tutorial site, and the repository is a mirror of its structure

All the prose in the repository is written in Chinese, and so is the project description. The README routes readers to an external documentation site, a learning tutorial and a video tutorial course, none of which are in this tree.

What the repository does contain is a structural index rather than explanations. The module descriptions are one line each, the technology tables give a name, a one-line role and a link for every component, and the feature sections for the back office and the storefront point at mind-map images under document/resource rather than describing behaviour. Product management, order management, promotions, content and users each get a diagram file and a link.

The consequence is that the repository tells you what exists and not what it does. Understanding how a module behaves means following the links off GitHub, which is a workable arrangement for a Chinese-reading audience and a real friction for anyone else.

## The live demo runs on someone else's server, so what you see is not what you build

Two hosted demos are linked, one for the admin system and one for the storefront, with a note that switching the browser to phone mode gives a better view of the mobile side. They sit on the same domain as the documentation.

They are the fastest way to see the finished product, and that is exactly the trap. The demos run against hosted infrastructure, so they show the reference implementation working, not the state of the master branch. Nothing connects the two.

The README also lists a set of desktop tools for working on the project, including IDEA, Navicat for the database, Robomongo for Mongo, RedisDesktop, X-shell for remote Linux, SwitchHosts for local host management, PowerDesigner for database design and Postman for API testing. That list is a description of the author's own workstation, and it tells you what a working setup involves without specifying any of it in configuration.

## Conclusion

Read mall as a reference implementation of how a shop is wired together, not as a product to deploy. It suits someone learning Spring Boot layering who will read the code alongside the tutorial site, and it does not suit anyone who needs a maintained e-commerce platform, since the newest tag is v1.0.3 from March 2024 and the storefront, the admin panel and the microservices variant are three other repositories. Before you start, budget for the services it assumes already exist: MySQL, Redis, MongoDB, Elasticsearch, RabbitMQ and MinIO, plus the separate front-end clones you will need before anything renders in a browser.

## FAQ

### What is the macrozheng mall project?

It is an Apache-2.0 Java e-commerce project built on Spring Boot and MyBatis with Docker deployment, split into seven Maven modules. The back office covers products, orders, members, promotions, operations, content, reports, finance, permissions and settings.

### Which branch should I use for mall?

The master branch is based on Spring Boot 3.5 and JDK 17. The dev-v2 branch is based on Spring Boot 2.7 and JDK 8, so pick dev-v2 if you are on an older JDK.

### What services does mall need to run?

The technology stack names MySQL through MyBatis and Druid, Redis for in-memory data, MongoDB, Elasticsearch for the search module, RabbitMQ for messaging, MinIO for object storage and Nginx for static resources. A reverse proxy and at least six backing services are expected to be available.

### Where is the mall front end?

The admin interface is the separate mall-admin-web repository and the storefront is mall-app-web. A Spring Cloud Alibaba microservices version of the backend is published separately as mall-swarm.

### Is mall actively released?

The newest release tag is v1.0.3 from 1 March 2024, after v1.0.2 in June 2022 and v1.0.1 in August 2020. The master branch has been committed to since, with the last push on 15 September 2026, so the tags lag the branch.

## Sources

- [Official documentation](https://www.macrozheng.com/admin/)
- [Official README](https://github.com/macrozheng/mall#readme)
- [Project repository](https://github.com/macrozheng/mall)
- [Release notes](https://github.com/macrozheng/mall/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/macrozheng-mall
