springboot多模块拆分与打jar包、war包

springboot多模块拆分项目创建的工具:

  • idea

springboot多模块拆分项目说明:

  • 常见问题
  • 打包
  • 创建模块
  • 循环依赖

springboot多模块拆分项目创建模块

我们将项目分为以下模块:

  • caip-annotation
  • caip-common
  • caip-service
  • caip-domain
  • caip-web(核心启动类)

接下来开始创建新项目,如下图:

选择Spring Initializr初始化spring相关项目组件。因为本身我们要创建springboot项目,所以选择用idea这个自带的功能创建是相当方便快捷的,简直不要太爽!!!

创建好父项目,该项目为空的pom项目,主要是用来作为所有子模块的jar引用、root节点打包。

这里我们是普通web项目,那么就勾选上Web项目,springboot的版本自行斟酌,到这里,我相信你能感觉到idea的方便之处!

点击下一步就完成即可。

父(根)项目创建完成结构如下图:

还有一个需要注意的地方是,父项目不需要配置maven打包,不然打包会打包出一份多余的jar包:

拆分子模块并创建

PS:在创建子模块时,你脑海中一定要规划清楚,否则出现循环依赖,就不好办了。比如common依赖了service,service又依赖了common,但是你得核心启动模块又依赖了这两个子模块,就会出现循环依赖的问题。所以规划的时候要思路清晰。

首先创建caip-annotation子模块如下图:

后面的和parent项目相同的流程,创建完成后如下图:

然后子模块:service、domain、common都是相同的创建方式、配置和目录结构,只是项目名称和artifactd不同,按照上图的配置和说明,更改配置。子模块除了核心启动类(caip-web),其他的启动类全都要删除,只保留一个核心启动类来启动项目。其中多余的依赖包和properties在parent已经具备,如下图:

所以子模块中的<properties>、springbootstarterweb、test都不需要。

子模块核心启动类的创建和前面的子模块项目创建流程一样,结构目录如下:

下面是核心启动类的pom配置:

如果你想以jar包执行项目请参考下图:

常见问题:

  • 循环依赖。这个问题由于你拆分的子模块相互依赖,并且核心启动也依赖,会导致该问题。怎么解决?拆分可以独立的模块,比如之前我的annotation子模块的注解放在common中,依赖了service、domain、那么service和又依赖了common,就形成了循环依赖。所以我直接拆分出annotation作为子模块。
  • 打包。如果需要以java命令jar包的方式依赖springboot内置Tomcat启动项目,那么必须配置启动的main的class;如果打war包,依赖外置Tomcat启动项目,那么不需要配置main的class入口,然后parent项目pom配置排除springboot内置Tomcat。
  • 启动报错找不到bean,或无法装载bean。因为项目的拆分,所以springboot无法自动扫描到controller、service、自定义注解等等,那么需要在启动类上的SpringBootApplication注解手动配置scanBasePackages扫描相应的子模块的包。

就到这里结束了,这里附上源码链接: https://pan.baidu.com/s/1TiSLICUZC8dqX5c0HyfISw 提取码: 222n。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值