开始先给大家讲一个故事:
客户要做一个内部办公系统项目,项目包含了 前台接待,员工管理,财务结算,库存管理 然后,我们一块做,做完上线。
过了段时间,某个功能需要修改,于是你们一块改改改,上线时,所有功能都暂停使用20分钟,更新版本。
再过了段时间,财务结算需要修改,于是又改改改,上线时,又暂停20分钟,更新版本。
时间过去了,客户又提出,,,,,
客户开始抱怨了,我只是要改某个模块,每次都要所有部门都暂停,损失太大了!
于是,接待系统,员工系统,财务系统,库存系统。四个系统应运而生;
叕一段时间后,客户提出,你看登录后这个位置啊,把我的名字写到公司名字下面,还要把十几个股东的资料展示出来,还有、、、
于是你带着需求回去面对四个系统的相同功能修改、、、卒!
采用分模块的方式构建项目就是将上例中用到的两种方式结合在一起,简而言之就是将一个大的项目拆分成小的模块,各功能之间互不干扰又可实现共用基础参数;
各个模块之间依赖关系
看结构 一目了然
编译工具:IDEA JDK1.8
打开IDEA,左上角 File-->new-->project
选择Spring Initializr --> Next
之后填写项目名称,选择JDK版本,其他无需修改 --> Next
Group: 一般为公司域名 Artifact: 项目工程名称
因为我们是在构建父模块,所以其他暂时不要勾选,看一下springboot的版本
之后填写项目名、项目地址 --> Finish
等待项目构建完成...........
删掉部分文件
到这里,父模块算是构建完成,给大家看一下父模块的pom文件内容
创建common公共模块 ,common层我们一般存放实体类,工具类,常量类、异常类等一些共用且不需要交由Spring管理的类,因此创建的时候不需要它是一个SpringBoot项目,只需要创建为传统的Maven项目即可;
选中我们的项目名Benci-erp,右键New --> Module
选择Maven,以表示我们创建的是一个Maven项目 --> Next
此处填写的artifactId就是我们的模块名,创建该模块时,如果第一步选中了父模块,那么此处GroupId和Version都会自动填充,如果没有自动填充,说明创建该模块的时候没有选中Wayne-ERP --> Next
该模块的名称以及该模块存放的位置,我一般在自动生成的名称中间加个-
就拿来直接使用了 --> Finish
我们再回过头看一下父pom 你会发现 父pom多了一个module子模块
我们再打开erp-common模块的pom文件 其中relativePath 指向父pom文件位置
到现在,common公共层已创建完毕,我们再看一下项目结构
创建 erp-service 方式和common一样,此处不再一一演示。service我们一般只存放service接口,因此也不需要交由Spring去管理,所以我们也将其创建为传统的Maven项目。
创建中。。。。。。
创建完成后,父pom会多一个module
erp-service的pom文件如下
创建erp-service-impl
erp-service-impl我们一般存放service实现类,Controller中需要自动注入,需要交由Spring管理,所以我们将其创建为SpringBoot项目。
选中项目名Benci-Erp,右键New --> Module,在弹出的页面中选择Spring Initializr --> Next
此处Group需要手动填写,填好之后 --> Next
选择SpringBoot版本,与创建父模块时选择版本要保持一致
创建中....................
创建完成之后,需要在父pom中手动添加erp-service-impl子模块,并删除dependencies中的依赖
erp-service-impl的pom文件中parent标签,手动替换为如下格式
删掉service-impl部分文件
到这里 基本架构基本完成了 接下来 你要看你想把项目拆成多少模块,比如 仓库模块 员工管理模块 财务结算模块 接待模块
比如仓库模块
新建module erp-Warehouse
这就是我们仓库管理系统的打包入口,启动入口,存放与仓管相关接口和页面
创建方式与erp-service-impl相似
此处需要修改Package内容,此处包名表示SpringBoot自动生成的main方法所在的位置
因为SpringBoot基于main方法启动时,默认会自动扫描本包及本包下所有子包的内容,所以我们将main方法向外提一层;
把剩余几个系统构建完,项目结构如图
给大家列举一下建好的各个模块的pom文件
每个web模块对应一个main方法
启动时找到各自的main方法
点击启动即可
到这里 已经讲解完成!
有不对的地方或者有遗漏的地方麻烦指出一下,不胜感激!