mall-tiny项目介绍
mall-tiny项目介绍
大家如果了解过Spring Cloud,就会发现其实Spring Cloud项目都是由一个个Spring Boot项目组合起来的。在架构篇中将带大家将一个单体的Spring Boot项目改造成微服务的Spring Cloud项目,这里以mall-tiny脚手架项目为例,本节课程就来介绍下这个项目!
项目简介
mall-tiny项目是一个基于Spring Boot的脚手架项目,精简掉了mall项目中的电商业务,保留了基本的项目骨架,非常适合学习使用。
架构篇中的mall-tiny项目做了一点改造,仅保留了后台用户管理、前台会员管理、商品搜索功能、MBG代码生成器等功能。
移除了Spring Security(方便后续使用微服务权限方案),使用了SpringDoc作为API文档生成工具。
技术栈
mall-tiny项目脚手架采用现阶段主流Java技术栈实现,涵盖了如下技术。
代码结构
这里简单介绍下mall-tiny项目的代码结构,具体类中的代码我们会在mall-tiny拆分为多模块架构时进行讲解。
mall-tiny
│ pom.xml
└─src
└─main
├─java
│ └─com.macro.mall.tiny
│ │ MallTinyApplication.java -- mall-tiny模块启动类
│ ├─common -- 项目通用代码
│ │ ├─api -- 通用API返回结果
│ │ │ CommonPage.java
│ │ │ CommonResult.java
│ │ │ IErrorCode.java
│ │ │ ResultCode.java
│ │ ├─exception -- 统一异常处理
│ │ │ ApiException.java
│ │ │ GlobalExceptionHandler.java
│ │ └─utils -- 通用工具类
│ │ JwtTokenUtil.java
│ ├─component -- 项目组件
│ │ CancelOrderReceiver.java
│ │ CancelOrderSender.java
│ ├─config -- 项目Java配置
│ │ GlobalCorsConfig.java
│ │ IgnoreUrlsConfig.java
│ │ MyBatisConfig.java
│ │ RabbitMqConfig.java
│ │ RedisConfig.java
│ │ SpringDocConfig.java
│ ├─controller -- 用于存放controller层代码
│ │ EsProductController.java
│ │ MemberReadHistoryController.java
│ │ MinioController.java
│ │ OmsPortalOrderController.java
│ │ PmsBrandController.java
│ │ UmsAdminController.java
│ │ UmsMemberController.java
│ ├─dao -- 用于存放dao层代码
│ │ EsProductDao.java
│ ├─domain -- 用于存放封装的实体类
│ │ AdminUserDetails.java
│ │ UmsResource.java
│ ├─dto -- 用于存放数据传输对象Dto的代码
│ │ BucketPolicyConfigDto.java
│ │ MinioUploadDto.java
│ │ OrderParam.java
│ │ QueueEnum.java
│ ├─mbg -- 用于存放MBG相关代码
│ │ │ CommentGenerator.java
│ │ │ Generator.java
│ │ ├─mapper
│ │ │ PmsBrandMapper.java
│ │ └─model
│ │ PmsBrand.java
│ │ PmsBrandExample.java
│ ├─nosql
│ │ ├─elasticsearch -- 用于存放操作ES的相关代码
│ │ │ ├─document
│ │ │ │ EsProduct.java
│ │ │ │ EsProductAttributeValue.java
│ │ │ └─repository
│ │ │ EsProductRepository.java
│ │ └─mongodb -- 用于存放操作MongoDB的相关代码
│ │ ├─document
│ │ │ MemberReadHistory.java
│ │ └─repository
│ │ MemberReadHistoryRepository.java
│ └─service -- 用于存放service层代码
│ │ EsProductService.java
│ │ MemberReadHistoryService.java
│ │ OmsPortalOrderService.java
│ │ PmsBrandService.java
│ │ RedisService.java
│ │ UmsAdminService.java
│ │ UmsMemberService.java
│ └─impl -- 用于存放service层实现类代码
│ EsProductServiceImpl.java
│ MemberReadHistoryServiceImpl.java
│ OmsPortalOrderServiceImpl.java
│ PmsBrandServiceImpl.java
│ RedisServiceImpl.java
│ UmsAdminServiceImpl.java
│ UmsMemberServiceImpl.java
└─resources
│ application.yml -- 默认项目配置文件
│ generator.properties -- MBG数据库连接配置文件
│ generatorConfig.xml -- MBG代码生成器配置
├─com.macro.mall.tiny.mbg.mapper -- MBG生成的mapper.xml文件路径
│ PmsBrandMapper.xml
└─dao -- 自定义实现的mapper.xml文件路径
EsProductDao.xml
项目功能
- 运行mall-tiny项目的启动类之后,我们可以运行项目;
- 通过浏览器可以访问API文档,点击右上角标签切换为
mall-admin
,可以访问后台用户管理,商品品牌管理等接口,访问地址http://localhost:8080/swagger-ui/index.html
- 点击右上角标签切换为
mall-portal
,可以访问前台会员管理、前台订单管理等接口;
- 点击右上角标签切换为
mall-search
,可以访问搜索商品管理接口。
代码生成器
由于mall-tiny项目集成了MyBatis Generator代码生成器,可以根据数据库生成单表CRUD代码,如果你想生成代码的话,可以使用Generator类的main方法来生成。
首先我们需要修改generatorConfig.xml
中的配置,这里我们添加了ums_menu
表的代码生成配置;
之后我们运行Generator类的main方法即可生成单表的CRUD代码了。
总结
本节课程主要带大家熟悉了下mall-tiny项目的代码结构和功能,大家如果对Spring Boot和MyBatis比较熟悉的话,可以详细地看下里面的代码,这对之后的mall-tiny改造为微服务架构还是很有帮助的!
项目源码地址
https://github.com/macrozheng/mall-swarm-arch/tree/master/mall-tiny