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中建立对应的分层代码即可。

未完待续... ...


愿你就像早晨八九点钟的太阳,活力十足,永远年轻。

发布了93 篇原创文章 · 获赞 136 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_27706119/article/details/104327114
今日推荐