亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot Maven項目中Model間的最佳繼承設計詳解

 更新時間:2024年01月19日 10:23:37   作者:樂樂家的樂樂  
這篇文章主要為大家詳細介紹了SpringBoot中一個優(yōu)秀Maven項目的各Model間最佳繼承設計的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下

賭上職業(yè)生涯的后臺管理框架 - XiaoLe

最近心血來潮準備賭上自己這些年學習的知識做一個耗盡心血的后臺管理項目 - Xiaole,隨即自信的打開IDEA準備大展身手,結果架構設計這塊怎么構建都不是很滿意,參考了多個優(yōu)秀的開源項目之后,用自己淺薄的知識總結了一套Model設計方案。

博主自己設計,僅供參考。

所以說一個優(yōu)秀的Spring Boot模塊設計需要具備那些基本要素

單一職責原則 (Single Responsibility Principle):

每個模塊應該專注于執(zhí)行一個清晰且明確定義的功能,遵循單一職責原則,以降低模塊的復雜性。

高內聚性 (High Cohesion):

模塊內的組件和類應該緊密相關,共同實現(xiàn)模塊的目標。高內聚性有助于提高代碼的可理解性和可維護性。

低耦合性 (Low Coupling):

模塊之間的依賴應該盡可能減少,以便修改一個模塊時不會對其他模塊造成影響。低耦合性有助于實現(xiàn)獨立的模塊。

可重用性 (Reusability):

模塊應該設計成可重用的組件,以便在項目的不同部分或未來的項目中能夠復用。這通過提取通用功能到獨立的模塊(如common模塊)來實現(xiàn)。

清晰的界限和接口 (Clear Boundaries and Interfaces):

模塊之間的界限和接口應該明確,確保模塊之間的交互清晰可見。這有助于團隊成員理解各個模塊的職責。

適度的模塊化 (Moderate Modularity):

將功能相近的組件放在同一模塊中,但避免過度細化,以免引入不必要的復雜性。適度的模塊化有助于提高項目的可維護性。

分層架構 (Layered Architecture):

通過采用分層架構,如控制層、服務層、數(shù)據(jù)訪問層等,有助于模塊的劃分和管理。這有助于代碼的組織和理解。

依賴倒置原則 (Dependency Inversion Principle):

模塊之間的依賴關系應該依賴于抽象而不是具體的實現(xiàn)。這有助于降低模塊之間的耦合性。

測試容易性 (Testability):

模塊應該設計成易于測試的單元,以便進行單元測試、集成測試和端到端測試。

適應未來擴展 (Adaptability for Future Extension):

模塊設計應該考慮未來的擴展性,以便在需求變化時能夠輕松地添加新功能或模塊。

打開IDEA 開始創(chuàng)建項目

博主目前腦子里邊有一個初步的架構。整體項目使用的是Maven管理的項目。

大概架構長這樣:

項目目錄結構總覽(目前還不完整)

├─.idea
├─le-admin
│  └─src
│      ├─main        
│      │  ├─java     
│      │  │  └─com   
│      │  │      └─le
│      │  │         └─admin
│      │  └─resources
│      │      └─META-INF
│      └─test
│          └─java
│              └─com
│                  └─le
│                      └─test
├─le-business
│  └─src
│      └─main
│          └─java
│              └─com
│                  └─le
│                      └─business
├─le-common
│  └─src
│      └─main
│          └─java
│              └─com
│                  └─le
│                      └─common
├─le-core
│  └─src
│      └─main
│          └─java
│              └─com
│                  └─le
│                      └─core
├─le-gen-code
│  └─src
│      └─main
│          ├─java
│          │  └─com
│          │      └─le
│          │          └─code
│          │              ├─config
│          │              ├─controller
│          │              ├─domain
│          │              ├─mapper
│          │              ├─service
│          │              └─util
│          └─resources
│              ├─mapper
│              └─vm
└─le-tripartite
    └─src
        └─main
            └─java
                └─com
                    └─le
                       └─tripartite

core` 模塊:

  • 應用概述: core 模塊是整個項目的核心,專注于提供通用的配置和基礎服務。
  • 主要功能: 可能包含 Spring Boot 的核心配置、通用的攔截器、全局異常處理等。
  • 角色定位: 不包含具體的業(yè)務邏輯,主要為其他模塊提供基礎設施。
  • pom文件:↓
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.xiaole</groupId>
        <artifactId>XiaoLe</artifactId>
        <version>1.0.0</version>
    </parent>

    <groupId>com.le</groupId>
    <artifactId>le-core</artifactId>

    <name>le-core</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

        <!-- MyBatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>

        <!-- Mysql驅動包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>com.le</groupId>
            <artifactId>le-business</artifactId>
        </dependency>


    </dependencies>
</project>

common 模塊:

  • 應用概述: common 模塊用于存放通用的工具類和公共配置,為整個項目提供共享的基礎。
  • 主要功能: 包含通用的工具方法、常量、公共配置等。
  • 角色定位: 不包含具體的業(yè)務邏輯,主要為其他模塊提供通用功能。
  • pom文件:↓
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.xiaole</groupId>
        <artifactId>XiaoLe</artifactId>
        <version>1.0.0</version>
    </parent>

    <groupId>com.le</groupId>
    <artifactId>le-common</artifactId>

    <description>
        common
    </description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>

    </dependencies>
</project>

genCode 模塊:

  • 應用概述: genCode 模塊可能是一個工具模塊,用于生成代碼或加速開發(fā)過程。
  • 主要功能: 可能包含代碼生成器、模板引擎等,用于生成基礎代碼結構。
  • 角色定位: 可能是一個開發(fā)輔助工具,用于提高代碼生成的效率。
  • pom文件:↓
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.xiaole</groupId>
        <artifactId>XiaoLe</artifactId>
        <version>1.0.0</version>
    </parent>

    <groupId>com.le</groupId>
    <artifactId>le-gen-code</artifactId>

    <name>le-gen-code</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>

        <dependency>
            <groupId>com.le</groupId>
            <artifactId>le-common</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
        </dependency>
    </dependencies>
</project>

business 模塊:

  • 應用概述: business 模塊是項目的業(yè)務核心,包含實際的業(yè)務邏輯和數(shù)據(jù)庫訪問。
  • 主要功能: 包含與業(yè)務相關的服務、領域邏輯、數(shù)據(jù)庫訪問(如 MyBatis、Redis)、業(yè)務配置等。
  • 角色定位: 為整個項目提供具體的業(yè)務功能,可能包括訂單處理、用戶管理等。
  • pom文件:↓
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.xiaole</groupId>
    <artifactId>XiaoLe</artifactId>
    <version>1.0.0</version>
</parent>

<groupId>com.le</groupId>
<artifactId>le-business</artifactId>

<name>le-business</name>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>

    <dependency>
        <groupId>com.le</groupId>
        <artifactId>le-common</artifactId>
    </dependency>

    <dependency>
        <groupId>com.le</groupId>
        <artifactId>le-tripartite</artifactId>
    </dependency>

</dependencies>
</project>

tripartite 模塊:

  • 應用概述: tripartite 模塊可能是與第三方服務集成的模塊,處理外部服務的調用和數(shù)據(jù)交互。
  • 主要功能: 包含與第三方服務通信的代碼、集成配置等。
  • 角色定位: 為整個項目提供與外部系統(tǒng)的連接,可能包括支付網關、第三方 API 等。
  • pom文件:↓
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.xiaole</groupId>
        <artifactId>XiaoLe</artifactId>
        <version>1.0.0</version>
    </parent>

    <groupId>com.le</groupId>
    <artifactId>le-tripartite</artifactId>

    <name>le-tripartite</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>

        <dependency>
            <groupId>com.le</groupId>
            <artifactId>le-common</artifactId>
        </dependency>

    </dependencies>
</project>

admin 模塊:

  • 應用概述: admin 模塊可能是項目的管理界面,提供對系統(tǒng)的監(jiān)控和管理功能。
  • 主要功能: 包含管理界面的業(yè)務邏輯、前端代碼、可能的后臺服務等。
  • 角色定位: 為管理員提供系統(tǒng)監(jiān)控、用戶管理等功能。
  • pom文件:↓
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.xiaole</groupId>
        <artifactId>XiaoLe</artifactId>
        <version>1.0.0</version>
    </parent>

    <groupId>com.le</groupId>
    <artifactId>le-admin</artifactId>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>

        <dependency>
            <groupId>com.le</groupId>
            <artifactId>le-gen-code</artifactId>
        </dependency>

        <dependency>
            <groupId>com.le</groupId>
            <artifactId>le-core</artifactId>
        </dependency>

    </dependencies>
</project>

父pom

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xiaole</groupId>
    <artifactId>XiaoLe</artifactId>
    <version>1.0.0</version>

    <packaging>pom</packaging>

    <name>xiaole</name>
    <description>小樂</description>

    <modules>
        <module>le-admin</module>
        <module>le-common</module>
        <module>le-core</module>
        <module>le-business</module>
        <module>le-gen-code</module>
        <module>le-tripartite</module>
    </modules>

    <properties>
        <spring-boot.version>2.5.8</spring-boot.version>
        <xiaole.version>1.0.0</xiaole.version>
        <velocity.version>2.3</velocity.version>
        <mybatis.version>2.2.0</mybatis.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.velocity</groupId>
                <artifactId>velocity-engine-core</artifactId>
                <version>${velocity.version}</version>
            </dependency>

            <dependency>
                <groupId>com.le</groupId>
                <artifactId>le-core</artifactId>
                <version>${xiaole.version}</version>
            </dependency>

            <dependency>
                <groupId>com.le</groupId>
                <artifactId>le-admin</artifactId>
                <version>${xiaole.version}</version>
            </dependency>

            <dependency>
                <groupId>com.le</groupId>
                <artifactId>le-common</artifactId>
                <version>${xiaole.version}</version>
            </dependency>

            <dependency>
                <groupId>com.le</groupId>
                <artifactId>le-business</artifactId>
                <version>${xiaole.version}</version>
            </dependency>

            <dependency>
                <groupId>com.le</groupId>
                <artifactId>le-gen-code</artifactId>
                <version>${xiaole.version}</version>
            </dependency>

            <dependency>
                <groupId>com.le</groupId>
                <artifactId>le-tripartite</artifactId>
                <version>${xiaole.version}</version>
            </dependency>

            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.version}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>

</project>

為什么采用import引入SpringBoot

import 語句可以用于將其他 Maven 項目中的 POM 文件導入到當前項目中。這樣,可以實現(xiàn)模塊化的項目管理。

使用 import 語句導入其他項目的依賴時,可以在導入時指定版本,使得項目能夠更加靈活地選擇使用依賴的版本。

可以將相關的模塊組織到不同的 Maven 項目中,通過 import 在一個父項目中統(tǒng)一管理。這有助于更好地組織項目的結構。

源碼參考

XiaoLe: 一款 輕便、靈活、穩(wěn)定、健壯 的建站框架。 賭上自己的java生涯, 用盡自己的畢生所學。 (gitee.com)

以上就是SpringBoot Maven項目中Model間的最佳繼承設計詳解的詳細內容,更多關于SpringBoot Maven模塊繼承設計的資料請關注腳本之家其它相關文章!

相關文章

  • SpringBoot集成Neo4j的詳細教程

    SpringBoot集成Neo4j的詳細教程

    Spring Boot 提供了對 Neo4j 的良好支持,使得開發(fā)者可以更方便地使用圖數(shù)據(jù)庫,通過使用 Spring Data Neo4j,開發(fā)者可以輕松地進行數(shù)據(jù)訪問、操作以及管理,本文將詳細介紹如何在 Spring Boot 應用中集成 Neo4j,需要的朋友可以參考下
    2024-11-11
  • Java踩坑記錄之BigDecimal類

    Java踩坑記錄之BigDecimal類

    這篇文章主要給大家介紹了關于Java踩坑記錄之BigDecimal類的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 生產者消費者模型ThreadLocal原理及實例詳解

    生產者消費者模型ThreadLocal原理及實例詳解

    這篇文章主要介紹了生產者消費者模型ThreadLocal原理及實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • springboot+vue前后端分離項目中使用jwt實現(xiàn)登錄認證

    springboot+vue前后端分離項目中使用jwt實現(xiàn)登錄認證

    本文介紹了如何在SpringBoot+Vue前后端分離的項目中使用JWT實現(xiàn)登錄認證,內容包括后端的響應工具類、JWT工具類、登錄用戶實體類、登錄接口、測試接口、過濾器、啟動類以及前端的登錄頁面實現(xiàn),感興趣的可以了解一下
    2024-10-10
  • java?WebSocket?服務端實現(xiàn)代碼

    java?WebSocket?服務端實現(xiàn)代碼

    WebSocket協(xié)議是基于TCP的一種新的網絡協(xié)議。它實現(xiàn)了瀏覽器與服務器全雙工(full-duplex)通信——允許服務器主動發(fā)送信息給客戶端,這篇文章主要介紹了java?WebSocket?服務端代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • 聊一聊concurrenthashmap的size方法原理

    聊一聊concurrenthashmap的size方法原理

    這篇文章主要介紹了concurrenthashmap的size方法原理,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java中Elasticsearch的核心概念詳解

    Java中Elasticsearch的核心概念詳解

    這篇文章主要介紹了Java中Elasticsearch的核心概念詳解,Elasticsearch 是一個分布式、免費和開放的搜索和分析引擎,適用于所有類型的數(shù)據(jù),包括文本、數(shù)字、地理空間、結構化和非結構化數(shù)據(jù),需要的朋友可以參考下
    2023-07-07
  • Java中Aspose組件進行多文檔間的轉換方法總結

    Java中Aspose組件進行多文檔間的轉換方法總結

    在本篇文章里我們給大家分享了關于Java中Aspose組件進行多文檔間的轉換方法內容,需要的朋友們學習下吧。
    2019-02-02
  • 常用的Java數(shù)據(jù)結構知識點匯總

    常用的Java數(shù)據(jù)結構知識點匯總

    這篇文章主要介紹了常用的Java數(shù)據(jù)結構知識點匯總,數(shù)據(jù)結構分線性數(shù)據(jù)結構和非線性數(shù)據(jù)結構,下面對此作詳細介紹,需要的小伙伴可以參考一下,希望對你的學習或工作有所幫助
    2022-03-03
  • java中刪除數(shù)組中重復元素方法探討

    java中刪除數(shù)組中重復元素方法探討

    這個是一個老問題,但是發(fā)現(xiàn)大多數(shù)人說的還不夠透。小弟就在這里拋磚引玉了,歡迎拍磚
    2013-10-10

最新評論