SpringBoot项目多模块开发详解

最全SpringBoot项目多模块开发详解,看这篇就够了

一、为什么使用

1.为什么要多模块开发?

使用java技术开发项目的时候,随着项目的不断发展,需求的不断更新,代码越来越多,包结构也越来越复杂,就会遇到很多问题:

  • 不同方面的代码之间相互耦合,这时候一系统出现问题很难定位到问题的出现原因,即使定位到问题也很难修正问题,可能在修正问题的时候引入更多的问题。
  • 多方面的代码集中在一个整体结构中,新入的开发者很难对整体项目有直观的感受,增加了新手介入开发的成本,需要有一个熟悉整个项目的开发者维护整个项目的结构(通常在项目较大且开发时间较长时这是很难做到的)
  • 开发者对自己或者他人负责的代码边界很模糊,这是复杂项目中最容易遇到的,导致的结果就是开发者很容易修改了他人负责的代码且代码负责人还不知道,责任追踪很麻烦。

将一个复杂项目拆分成多个模块是解决上述问题的一个重要方法,多模块的划分可以降低代码之间的耦合性(从类级别的耦合提升到jar包级别的耦合),每个模块都可以是自解释的(通过模块名或者模块文档),模块还规范了代码边界的划分,开发者很容易通过模块确定自己所负责的内容。

2.拆分规则

  1. 按业务模块划分: 将一个大型系统按照不同的业务模块进行划分,每个模块可以独立开发、测试、部署和维护。比如,对于一个电商系统,可以将商品管理、订单管理、用户管理等业务模块单独拆分成不同的子模块。
  2. 按功能模块划分: 将一个系统按照不同的功能模块进行划分,每个模块负责完成一个特定的功能,比如认证、授权、缓存、搜索等。
  3. 按技术组件划分: 将一个系统按照不同的技术组件进行划分,每个模块可以包含一个或多个技术组件,比如数据库连接、消息队列、缓存框架等。
  4. 按层次划分: 将一个系统按照不同的层次进行划分,每个模块可以包含一个或多个层次,比如数据访问层、服务层、控制层等。
  5. 混合划分: 可以将上述的任意两种或多种方式结合起来使用,以达到更好的代码复用、可维护性和可扩展性。

在这里插入图片描述

在这里插入图片描述

二、pom.xml常见配置

dependencyManagement

为了保持模块间依赖统一,在父模块中使用dependencyManagement预定义所有模块需要用到的dependency(依赖),然后,子model根据实际需要引入parent中预定义的依赖

好处:

1、依赖统一管理(parent中定义,需要变动dependency版本,只要修改一处即可);

2、代码简洁(子model只需要指定groupId、artifactId即可)

3、dependencyManagement只会影响现有依赖的配置,但不会引入依赖,即子model不会继承parent中dependencyManagement所有预定义的depandency,只引入需要的依赖即可,简单说就是“按需引入依赖”或者“按需继承”;因此,在parent中严禁直接使用depandencys预定义依赖,坏处是子model会自动继承depandencys中所有预定义依赖;

packaging

packaging默认类型jar类型,如果不做配置,maven会将该项目打成jar包。常见项目的打包类型:pom、jar、war:

pom ---------> 父类型都为pom类型
jar ---------> 内部调用或者是作服务使用
war ---------> 需要部署的项目(一般web相关)
小结:父级项目里packaging打包方式一般配置成pom,pom 表示项目里没有java代码,也不执行任何代码,只是为了聚合工程或传递依赖用的。

modules

管理子项目

build

在SpringBoot项目的pom.xml文件中,元素用于定义项目的构建配置,主要包括插件和资源过滤等配置。出现在pom.xml的顶层元素中,是一个重要的构建配置区。

<build>
  <plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>

  <resources>
    <resource>
        <filtering>true</filtering> 
        <directory>src/main/resources</directory>
    </resource>
  </resources>
</build>

SpringBoot项目通常需要的配置有:

  • 编译插件:maven-compiler-plugin
  • 打包插件:spring-boot-maven-plugin
  • 资源过滤配置
  • 插件管理配置

三、主要步骤

1.创建父项目

在这里插入图片描述

最后生成的文件中只有pom.xml .idea .iml文件没有src目录,自行删除

2.新建Module–子项目(service,dao,commons,web,api)

选择maven构建

在这里插入图片描述

3.编辑pom.xml文件

父项目中

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.dmk</groupId>
    <artifactId>boot-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>boot-parent</name>
    <!--父模块的打包方式-->
    <packaging>pom</packaging>
    <description>boot-parent</description>

    <!--parent 指明继承关系,给出继承的项目具体信息-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.13</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <modules>
        <module>boot-web</module>
        <module>boot-api</module>
        <module>boot-commons</module>
        <module>boot-dao</module>
        <module>boot-service</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.dmk</groupId>
                <artifactId>boot-web</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>com.dmk</groupId>
                <artifactId>boot-api</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>com.dmk</groupId>
                <artifactId>boot-service</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>com.dmk</groupId>
                <artifactId>boot-dao</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>com.dmk</groupId>
                <artifactId>boot-commons</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

子项目中(service)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.dmk</groupId>
    <artifactId>boot-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>boot-service</name>
    <description>boot-service</description>

    <parent>
        <groupId>com.dmk</groupId>
        <artifactId>boot-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.dmk</groupId>
            <artifactId>boot-dao</artifactId>
        </dependency>
    </dependencies>

</project>

4.启动类

建议将启动类只保留web模块中

在这里插入图片描述

5.application.yml文件

只在web模块中的application.yml中添加配置信息

6.打包测试

在这里插入图片描述

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
对于Spring Boot模块项目的打包,可以按照以下步骤进行操作。 首先,你需要将项目源码导入到本地进行打包验证。这些源码包括单工程构建打包和多模块打包的过程,可以放心使用。 在项目中,包含了一个父工程、多个子模块和一个工具模块。每个子模块都有启动类,而工具模块没有。因此,这三者的pom文件可能会有所不同。根据项目的需求,你需要修改这些pom文件。之后,你可以使用IDEA的打包工具一键打包整个项目。 接下来,你需要修改每个子模块中有启动类的pom文件。在这段配置中,你需要加入以下内容: <build> <plugins> <plugin> <!--该插件主要用途:构建可执行的JAR--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> </includes> </resource> </resources> </build> 以上配置的作用包括将java目录中的*.xml文件进行打包,并设置自己目录下的配置文件。 通过按照以上步骤进行操作,你就可以成功打包Spring Boot模块项目了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springboot模块打包源码](https://download.csdn.net/download/zhangcongyi420/88153258)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [SpringBoot模块项目打包教程,超详细图文详解!](https://blog.csdn.net/weixin_43314519/article/details/115152850)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值