1. 前言
1、“高内聚、低耦合”,spring-mvc项目,一般会把项目分成多个包:controller、service、mapper(dao)、common(如util)等,但是随着项目的复杂性提高,想复用其他一个模块的话,因为是包的形式,剥离出来会比较困难,耦合性有点强,常用的方法就是复制代码修改,但是这样会做很多无用功与增加出错几率。
2、而我们这里的“多模块”就是利用Maven以及打包方式,把按包分模块的模式,在多模块jar模式下可以将某个jar拿出来对外共用,能大大提高代码复用率与开发效率。
简单说也很简单,就是把原来的每个包(controller、service....等等)建立成模块;而这些模块之间又如何建立联系?利用Maven;
2. 步骤
建立父包,也即整个项目的父级;
父级项目也就是来管理依赖的,所以我们这里选择Maven POM(也即打包方式packging为pom),这样父级也就是管理依赖的;
然后建立多个模块(controller、service、mapper)
步骤和我们建立普通的SpringBoot的步骤一致,注意这里的packing就是默认的jar了;
建立完成的目录如下:
modules是整个父级,旗下common、controller、mapper、service就是模块;
现在要做的就是修改各自的pom.xml文件;
父级modules
主要就是添加:
这些module标签;
子级pom的修改
传统的MVC就是:controller调用service,service调用mapper(dao),所以这里需要修改两处:
一是:
这些子模块的parent,就是我们上面的父级:
需要将所有子模块的父级项目都像这样修改,才有效哈!
二是:
根据传统的MVC模式,所以我们需要添加依赖:
比如:controller依赖service,那么controller模块的pom.xml文件还需要:
再比如:service依赖mapper
当然,实际开发中,每个子模块都有一些依赖,所以肯定不止上面的这种controller依赖service,service依赖mapper这么简单,但是不管如何,如果我们需要使用其他模块的一些东西,那么就必须在自身的pom.xml文件中添加对方的依赖,然后导包才有效,才能使用;
3. 采坑点
1、不要加
Idea默认新建module时,会自动加上,加了就坏事,mvn package就会报错,不加默认是"../pom.xml",你如果只加反而会报错;
2、打包时跳过测试
打包时,测试是非常好的一个习惯,但是如果一直报错,就不美了,至于原因,还未知;
在父项目中添加如下插件即可跳过测试;