SpringBoot系列(4):构建一个多模块SpringBoot项目
前言
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中建立对应的分层代码即可。
未完待续... ...
愿你就像早晨八九点钟的太阳,活力十足,永远年轻。
SpringBoot系列(4):构建一个多模块SpringBoot项目相关推荐
- 机器学习入门系列(2)--如何构建一个完整的机器学习项目(一)
上一篇机器学习入门系列(1)–机器学习概览简单介绍了机器学习的一些基本概念,包括定义.优缺点.机器学习任务的划分等等. 接下来计划通过几篇文章来介绍下,一个完整的机器学习项目的实现步骤会分为几步,最后 ...
- .Net中的AOP系列之构建一个汽车租赁应用
返回<.Net中的AOP>系列学习总目录 本篇目录 开始一个新项目 没有AOP的生活 变更的代价 使用AOP重构 本系列的源码本人已托管于Coding上:点击查看. 本系列的实验环境:VS ...
- Net中的AOP系列之构建一个汽车租赁应用
本篇目录 开始一个新项目 没有AOP的生活 变更的代价 使用AOP重构 本系列的源码本人已托管于Coding上:点击查看. 本系列的实验环境:VS 2013 Update 5(建议最好使用集成了Nug ...
- SpringBoot系列之(二):1.使用SpringBoot
一.构建系统 1.依赖管理 1.1.依赖管理工具:maven/gradle/ant 1.2.依赖管理 1.2.1.默认(建议使用) 从spring initializr(https://start.s ...
- [Android5 系列—] 1. 构建一个简单的用户界面
前言 安卓应用的用户界面是构建在View 和ViewGroup 这两个物件的层级之上的. View 就是一般的UI组件,像按钮,输入框等. viewGroup 是一些不可见的view的容器,用来定义子 ...
- 【笑小枫的SpringBoot系列】【十五】SpringBoot根据模板生成Word
通过maven引入需要的依赖 <dependency><groupId>org.springframework.boot</groupId><artifact ...
- SpringBoot 系列教程(四十六):SpringBoot集成i18n国际化配置
一.概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationalization ...
- 【笑小枫的SpringBoot系列】【十六】SpringBoot生成PDF
关于笑小枫
- 利用vue-cli(脚手架)一步一步构建一个仿当当网项目
项目图 开发环境的搭建 这里我就不多叙述了,直接看我的这个文章有详细步骤 vue项目构建步骤 开发环境统一化 用一个插件 ESLint 我用的是vscode,所以就直接在插件里面下载了. 项目中已经自 ...
- glup 构建一个完整的jquery项目
1-gulp目录说明: glup dev 开发环境 var gulp = require('gulp'); var babel = require("gulp-babel"); v ...
最新文章
- 基于概率论的生成式建模新模式
- 高级软件工程第二次作业
- Redis五大数据结构
- (十二)算法设计思想之“分而治之”
- [IE技巧] 让IE 以全屏模式启动
- R语言基础入门(7)之数据类型的性质
- 使用逻辑回归制作评分卡
- linux内核定时器死机,浅析linux内核中timer定时器的生成和sofirq软中断调用流程
- oracle 查看 统计更新时间,oracle查看和更新统计表的信息
- 在VS2017(VC15)上配置opencv4.0.1环境
- 模拟电子技术基础简明课程(第三版)思维导图
- Android MediaPlayer+Stagefright框架(音频)图解
- C# 使用Aspose.Word将Word书签的数据进行替换 包含打印
- 个人学习java的真实经历!
- 直方图均衡(HE)与局部色调映射(LTM)
- 读《出梁庄记》乱摘2
- pytorch gpu版本安装
- 影评系统的机遇和挑战
- 成熟才是男人应该有的标志//2021-2-15
- 第一周 一起走进摄影世界