日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

SpringBoot項目多模塊開發詳解

作者:喬治Geroge 更新時間: 2024-03-08 編程語言

最全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.打包測試

在這里插入圖片描述

原文鏈接:https://blog.csdn.net/m0_73625251/article/details/136451396

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新