/multi-model-spring-boot-project-seed

一个基于SpringBoot&MyBatis的多模块项目脚手架

Primary LanguageJava

多模块的SpringBoot项目脚手架

简介

本项目是一个基于SpringBoot&MyBatis的多模块项目脚手架,整个项目不同的功能会被拆分到不同的模块中去,比如web模块是可以运行的web项目,一般用来封装业务系统;core模块封装Dao层等最基本的代码等。这样可以比较方便的处理一个项目多个应用的情况

模块概览

parent 最外层的聚合模块
├─ core 整个项目的核心,聚合了返回模板,异常处理,DAO层,你也可以自己往里面添加每个模块都应该有的功能。几乎每个子模块都应该依赖它
├─ web 一个主要的web应用,业务代码都应该在这,我已经写好了实例代码,后面的模块都可以仿照他完成
├─ admin 应用的管理端Web应用,我没有实现(需要的话自己实现,下同)
├─ mobile 应用的移动端后端,没有实现
└─ common 一些公共的工具代码,没有实现

剩下的模块可以根基自己的业务需求自行添加模块,只需要创建maven项目,在依赖core模块就可以上手编写需要的代码了。

相关配置

MyBatis Generator和数据库配置

  • 相关的代码全部在core模块中
  • generator的配置文件:sqlmap/auto/StudentExampleBeanMapper.xml,修改其中的数据库信息和需要更改的表信息就好
  • core模块的maven中配置了Generator的maven插件,修改好了generator的配置后使用插件启动generator即可
  • generator会生成mapper.xml文件、mapper接口和Bean类(Pojo类),会放在起名为auto的文件夹/包下,我已经放入了用于演示的文件
  • DataSource的bean配置在Core模块中,这样每个依赖core模块的模块都可以不用再写一遍dataSource,但是需要注意的是依赖core模块的基础报名必须要和core模块的基础包名一样,不然的话会导致DataSource这个Bean无法被注入
  • 其他的模块虽然不用写DataSource这个Bean,但是还是需要在application.yml中配置数据库相关信息

2. swagger

core模块集成了swagger,使用时只需要修改每个模块中的Swagger2类,并且参照示例controller中的用法即可生成接口文档

3. 常量和基础响应结构

  • 全局的常量字符串可以放到ProjectConstant类中,全局的返回之后状态码可以放到Code类中
  • 所有的service都会返回一个基础的响应结构BaseResult,使用BaseResultFactory类中的方法传入Code对象和承载返回数据的POJO就可以快速打造规范化的响应
  • 建议:在Service中返回的对象都应该是带泛型的BaseResult的对象(除了data是空的情况),这样代码的可阅读性会大大提升。

4. 异常抛出

  • 本系统拥有异常处理器:GlobalExceptionHandlerAdvice,在业务代码的任何地方都可以抛出异常,异常都会被异常处理器捕获并且抛出BaseResult
  • 有标准的业务异常类BusinessException,推荐相关的业务异常继承这个类,业务流程中直接抛出,然后在异常处理器中处理

5. 权限控制

  • 本系统使用了HandlerMethodArgumentResolver 进行权限控制,只需要在controller层的参数中加入TokenInfo对象并且加上@RequestToken注解,就可以在TokenArgumentResolver 对象里进行统一的token解析和构造TokenInfo对象
  • 具体的获取token和解析的操作要自己实现