前言
Spring Boot是一个简化Spring开发的框架。其设计目的是用来简化Spring应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,简化spring应用开发,约定大于配置,去繁就简,just run 就能创建一个独立的,产品级的应用。这里关于SpringBoot介绍将不再赘述,从本文开始,将逐步学习总结一些在实地的业务场景开发。
首先,我们需要先了解一下如何基于IDEA和项目构建工具Maven搭建一个标准的,企业级应用开发的SpringBoot项目。关于Maven多模块、职责分明的构建原则,分析如下:
这里关于构建一个标准的SpringBoot单模块项目不再赘述,我们直接步入正题,开始构建一个多模块的SpringBoot项目。
1、构建一个多模块SpringBoot项目
1.1 项目介绍
本次测试项目包含一个父模块工程 的ncp和 四 个子模块(ncp-base, ncp-dao, ncp-service, ncp-web), ncp-base 模块作为基础公共模块供其它其他三个模块的依赖使用。这四个child模块都依赖父模块, 各自的依赖关系如下:
ncp-dao 依赖 ncp-base;
ncp-service 依赖 ncp-dao,即间接依赖 ncp-base;
ncp-web 依赖 ncp-service,即间接依赖ncp-base和ncp-dao。
依赖关系如下图:
1.2 搭建方式
首先,创建一个 Spring Initializr工程ncp作为父级工程;
然后,在父工程下再创建四个子 Module(ncp-base, ncp-dao, ncp-service, ncp-web)工程。
实际上,这四个子model就是四个普通的Spring Initializr工程。
1.3 父级工程
首先创建一个Spring Initializr项目:ncp。
这个工程可作为父级工程,创建过程与常规的SpringBoot项目创建一样,并无区别。
1.4 子module模块工程
【1】首先,改造先前创建的父级工程,只保留.idea文件夹、pom.xml 文件及 *.iml 文件。
【2】创建子模块 Module (ncp-base, ncp-dao, ncp-service 和 ncp-web)
先创建ncp-base子工程 。右键父级项目ncp--->NEW---->Module。
创建一个Spring Initializr工程。
这里,需要注意,我们的项目名称选择
上图,我们已经在父级项目ncp下创建了一个子module工程:ncp-base
但是,这里还不够,还需要修改各自的pom文件配置信息。
首先,在ncp-base工程中声明父级工程。
注意:此时demo-base继承的是 SpringBoot提供的父工程,在其pom.xml中修改<parent></parent>
的父级版本信息, 修改成父项目 ncp信息。当然,为了省事,我们可以将父项目 ncp.pom文件的版本信息粘贴到 ncp-base 中即可)
【3】修改子module的 ncp-base.xml文件
<!--声明父级ncp项目信息,表名当前工程继承了父级项目的基础配置信息-->
<parent>
<groupId>ncp</groupId>
<artifactId>ncp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/>
</parent>
【4】修改父级项目ncp.xml文件
<!--子模块配置-->
<modules>
<module>ncp-base</module>
</modules>
实际上,ncp-dao、ncp-service的创建过程是一样的,只需要修改对应的配置信息即可。
接下来,我们创建一个ncp-web子module,创建过程雷同,只需注意要 添加 web依赖即可。
创建完成后的多模块工程结构如下图:
但是,上边的多模块项目并不合理,这里我们需要分别改造一下各项目模块。
1.5 注意事项
SpringBoot项目启动需要一个启动入口类,这里我们有四个子module都有启动类和资源配置文件。因此,我们需要注意我们的启动类是在ncp-web项目开始作为入口,其它子module可以删除对应的启动类和resources文件下的内容。
1.6 子module的依赖配置
分别修正子module的依赖配置,这里主要在对应的pom文件内,<dependency><dependency/>中就像引入普通的jar包依赖那样。
【1】ncp-dao的依赖信息配置,主要依赖ncp-base
<dependencies>
<!--添加ncp-base依赖-->
<dependency>
<groupId>ncp</groupId>
<artifactId>ncp-base</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
【2】ncp-service的依赖信息配置,主要依赖ncp-dao
<dependencies>
<!--添加ncp-dao依赖-->
<dependency>
<groupId>ncp</groupId>
<artifactId>ncp-dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
【3】ncp-web的依赖信息配置,主要依赖ncp-service
<dependencies>
<!--添加ncp-service依赖-->
<dependency>
<groupId>ncp</groupId>
<artifactId>ncp-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
2、测试
测试项目就按照常规的功能划分,在不同的子Module中建立对应的分层代码即可。
未完待续... ...