基于SpringBoot构建分模块项目

前言

步骤过于详细,多图慎入!!!

假设一个场景,要开发一个4s店维修部的办公系统,其功能有:前台接待,维修抢单,财务结算,库存管理。于是我们创建一个项目balabalabala写完交工。

一段时间后,客户提出,库存管理出现了重大调整。于是我们二次开发,写好之后,告知客户:“系统更新,所有部门暂停使用15分钟、、、”。于是,客户排队,维修停工,结算暂停、、、店内一片慌乱。

又一段时间后,客户提出,财务结算需要修改。于是我们再次开发,写好之后,告知客户:“系统更新,所有部门暂停使用15分钟、、、”。于是,客户排队,维修停工,仓库休息、、、店内一片慌乱。

双一段时间后,客户提出、、、

叒一段时间后,客户开始抱怨:“我只是调整某一个部门的业务,你们能不能不要把整个系统停掉,这样损失太大了、、、”

于是你对每个功能做一个系统,接待系统,维修系统,财务系统,库存系统。四个系统应运而生;

叕一段时间后,客户提出,你看登录后这个位置啊,把我的名字写到公司名字下面,还要把十几个股东的资料展示出来,还有、、、

于是你带着需求回去面对四个系统的相同功能修改、、、卒!

采用分模块的方式构建项目就是将上例中用到的两种方式结合在一起,简而言之就是将一个大的项目拆分成小的模块,各功能之间互不干扰又可实现共用基础参数;

构建

以上述需求为例,我们在拆分之时,根据需求,将其分成

  • 父模块

    • erp-common

    • erp-service

    • erp-service-impl

    • erp-web-reception

    • erp-web-finance

    • erp-web-fix

    • erp-web-repertory

创建父模块

构建分模块项目的时候首先需要创建一个父级的模块,所有的子模块均继承自父模块。因为我们整体架构采用SpringBoot构建,所以父模块要创建为SpringBoot项目

  1. 选择Spring Initializr --> Next
image
  1. 填写项目名称,选择JDK版本,其他无需修改 --> Next

    • Group: 一般为公司域名倒置

    • Artifact: 项目名

image
  1. 选择SpringBoot版本,其他无需勾选 --> Next
image
  1. 填写项目名、项目地址 --> Finish
image
  1. 创建之后,项目结构如下,删除如下选中部分文件
image
  1. 至此,父模块创建完成,此时的pom文件如下,此pom即是下文所说的父pom文件
image

创建 erp-common

erp-common模块我们约定只存放实体类,工具类,常量类、异常类等一些共用且不需要交由Spring管理的类,因此创建的时候不需要它是一个SpringBoot项目,只需要创建为传统的Maven项目即可;

  1. 选中我们的项目名Wayne-ERP,右键New --> Module
image
  1. 选择Maven,以表示我们创建的是一个Maven项目 --> Next
image
  1. 此处填写的artifactId就是我们的模块名,创建该模块时,如果第一步选中了父模块,那么此处GroupId和Version都会自动填充,如果没有自动填充,说明创建该模块的时候没有选中Wayne-ERP --> Next
image
  1. 该模块的名称以及该模块存放的位置,我一般在自动生成的名称中间加个-就拿来直接使用了 --> Finish
image
  1. 最下面的pom.xml即是父pom,父pom内容如下,增加了一个module子模块
image
  1. erp-common的pom文件如下,其中圈起部分为自己添加内容,relativePath 指向父pom位置
image
  1. 至此,erp-common模块创建完成,此时项目结构如下,
image

创建 erp-service

erp-service模块我们约定只存放service接口,因此也不需要交由Spring去管理,所以我们也将其创建为传统的Maven项目,创建方式与erp-common相同,此处不再赘述,如有不知道怎么操作的同学可私聊我或者发邮件给我

  1. 创建完成之后,此时父pom内容如下
image
  1. erp-service的pom文件如下
image

创建erp-service-impl

erp-service-impl我们约定存放service实现类,即业务层代码,在Controller中需要用到自动注入,因此需要交由Spring管理,所以我们将其创建为SpringBoot项目。在创建Maven的子模块与创建SpringBoot的子模块有些差别,下面列出详细步骤;

  1. 选中项目名Wayne-ERP,右键New --> Module,在弹出的页面中选择Spring Initializr --> Next

    image
  2. 此处Group需要手动填写,填好之后 --> Next

image
  1. 选择SpringBoot版本,与创建父模块时选择版本要保持一致
image
  1. 点击Next --> Finish

  2. 创建完成之后,需要在父pom中手动添加erp-service-impl子模块,并删除dependencies中的依赖

image
  1. 将erp-service-impl的pom文件中parent标签,手动替换为如下格式
image
  1. 此时项目结构如下,删除如下选中部分文件,因为我们程序的启动入口在erp-web-*,所以在erp-service-impl中不需要main方法(SpringBoot是以Main方法启动的)
image
  1. 至此,erp-service-impl模块创建完成,整体项目结构如下
image

创建erp-web-repertory

此模块即是我们仓库管理系统的打包入口,启动入口,存放与仓管相关接口和页面

  1. 创建方式与erp-service-impl相似,此处需要修改Package内容,此处包名表示SpringBoot自动生成的main方法所在的位置,因为SpringBoot基于main方法启动时,默认会自动扫描本包及本包下所有子包的内容,所以我们将main方法向外提一层;
image
  1. 此处表示SpringBoot创建好之后,自动添加的依赖,我们只选择Web即可,表明这是一个Web项目,后续需要用到第三方框架,我们再自行整合;
image
  1. 其余步骤与erp-service-impl相似,只是不需要删除自动生成的文件,此时项目接口如下:
image

创建其余web模块

此时我们还剩erp-web-reception、erp-web-finance、erp-web-fix没有创建,这三个模块与erp-web-repertory创建方式相同,此处就不再赘述,只需注意命名问题即可;

完整项目结构:

image

依赖

各个模块已经创建完成,还剩下的就是各个模块之间的依赖关系了,各模块之间应该怎么依赖呢?具体的哪个包又应该放在哪个模块下面的?我整理一张图片供大家参考:

image

pom文件如下:

image

web模块pom基本相似,都只引入erp-service-impl即可,在此只列举一个

image

运行

每个web模块对应一个main方法,启动时找到各自的main方法,点击启动即可,idea一般会自动检测SpringBoot程序入口,想跑哪个点哪个~~

image

扩展

另一种模块结构,感兴趣的可以发邮件与我;
image

占位符

常规占位 (¬_¬)…

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容