6-3 项目模块化-实操
一、项目模块化-pom版本号抽取
抽取版本号作为常量值,后续使用直接依赖,部分在spring-boot里已经包含的版本配置可以直接删除
项目配置
<properties>
<!--项目部署编码的文件编码格式-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--项目对外输出的编码格式-->
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!--Java源码版本号-->
<maven.compiler.source>8</maven.compiler.source>
<!--Java目标版本号-->
<maven.compiler.target>8</maven.compiler.target>
<!--Java SDK版本号-->
<java.version>1.8</java.version>
</properties>
常规依赖
<properties>
<!--spring-boot-->
<spring-boot.version>2.5.1</spring-boot.version>
<!--lombok-->
<lombok.version>1.18.20</lombok.version>
<!--knife4j-->
<knife4j.version>2.0.8</knife4j.version>
<!--mybatis-->
<mybatis.version>2.2.0</mybatis.version>
<mybatis-plugin.version>1.4.0</mybatis-plugin.version>
<!--国人工具库-->
<hutool.version>5.7.7</hutool.version>
<!--swagger-->
<swagger.version>2.10.5</swagger.version>
<!--fastjson-->
<fastjson.version>1.2.75</fastjson.version>
<!--aspectj-->
<aspectjrt.version>1.9.6</aspectjrt.version>
<aspectjweaver.version>1.9.6</aspectjweaver.version>
</properties>
二、项目模块化-module拆分
新建module:
1. main 主入口,集成化
2. common 公共基础库
3. beans 公共JavaBean
4. utils 工具类
5. exception 异常处理类
6. sys-user 系统用户角色
7. app-user 普通用户角色
8. web-car 基础业务,向上层提供服务
9. app-car 在web-car的基础上,向移动端提供服务
步骤:
File -> new -> Module -> Java-Maven
选择 Parent
,填写 Name
,Artifact Coordinates下填写(GroupId、ArtifactId、Version
)
三、项目模块化-代码迁移
新建子模块完成后,需要将项目里原有的代码迁移到对应模块下
迁移步骤概要
- 将
log
、yml
、generator
的配置文件给每个业务module
复制一份,并修改里面重要目录
- exception的迁移
- beans迁移,包括entry和常量类
- 业务代码迁移(
controller、service及impl、mapper及mapper.xml
) - 迁移pom里基础依赖至common下,mybatis-plugin自动生成代码的插件需要每个
业务module单独配置
- 添加各module之间需要的依赖(
依赖关系在下面有说明
) - 检查
- 配置启动项Application
此步骤需额外注意:
-
mapper-locations 数据库sql映射路径修改,type-aliases-package 实体类映射路径修改
# mybatis配置 mybatis: # 数据库映射 mapper-locations: classpath*:mapper/*.xml # main入口需要扫描所有module下,所以classpath后需要加* type-aliases-package: com.a2j.beans
-
main入口SpringBootApplication 扫描路径增加
// 主入口需要加全部包的扫描路径,包括yml内的type-aliases-package路径配置 // 其他业务module的Application中,也要加上对应组件库的扫描 @SpringBootApplication(scanBasePackages = "com.a2j.*") public class MainApplication { ... }
-
logging日志打印包名路径修改,main入口配置*
main入口配置
# logger 日志打印与备份 logging: level: com.a2j.*: debug
如果是其他module
# logger 日志打印与备份 logging: level: com.a2j.app.user.mapper.*: debug
-
mybatis-plugin自动生成代码配置修改(
generatorConfig.xml文件内
) -
拆分子模块后,使用自动生成代码插件时需要注释掉yml内其他module的依赖(插件缺陷,Mybatis-Plus已解决)
子module之间的依赖关系
- main 集成入口,包含所有子module
- 工具库 common -> beans -> utils 依赖beans方便业务对象转换
- 异常库 common -> beans -> exception 依赖beans方便业务异常对象转换
- 业务库 utils + exception -> web-car -> app-car
- 用户库 utils + exception -> app-user/sys-user