欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot Maven項(xiàng)目中Model間的最佳繼承設(shè)計(jì)詳解

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

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

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

博主自己設(shè)計(jì),僅供參考。

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

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

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

高內(nèi)聚性 (High Cohesion):

模塊內(nèi)的組件和類應(yīng)該緊密相關(guān),共同實(shí)現(xiàn)模塊的目標(biāo)。高內(nèi)聚性有助于提高代碼的可理解性和可維護(hù)性。

低耦合性 (Low Coupling):

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

可重用性 (Reusability):

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

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

模塊之間的界限和接口應(yīng)該明確,確保模塊之間的交互清晰可見。這有助于團(tuán)隊(duì)成員理解各個(gè)模塊的職責(zé)。

適度的模塊化 (Moderate Modularity):

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

分層架構(gòu) (Layered Architecture):

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

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

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

測試容易性 (Testability):

模塊應(yīng)該設(shè)計(jì)成易于測試的單元,以便進(jìn)行單元測試、集成測試和端到端測試。

適應(yīng)未來擴(kuò)展 (Adaptability for Future Extension):

模塊設(shè)計(jì)應(yīng)該考慮未來的擴(kuò)展性,以便在需求變化時(shí)能夠輕松地添加新功能或模塊。

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

博主目前腦子里邊有一個(gè)初步的架構(gòu)。整體項(xiàng)目使用的是Maven管理的項(xiàng)目。

大概架構(gòu)長這樣:

項(xiàng)目目錄結(jié)構(gòu)總覽(目前還不完整)

├─.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` 模塊:

  • 應(yīng)用概述: core 模塊是整個(gè)項(xiàng)目的核心,專注于提供通用的配置和基礎(chǔ)服務(wù)。
  • 主要功能: 可能包含 Spring Boot 的核心配置、通用的攔截器、全局異常處理等。
  • 角色定位: 不包含具體的業(yè)務(wù)邏輯,主要為其他模塊提供基礎(chǔ)設(shè)施。
  • 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驅(qū)動包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

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


    </dependencies>
</project>

common 模塊:

  • 應(yīng)用概述: common 模塊用于存放通用的工具類和公共配置,為整個(gè)項(xiàng)目提供共享的基礎(chǔ)。
  • 主要功能: 包含通用的工具方法、常量、公共配置等。
  • 角色定位: 不包含具體的業(yè)務(wù)邏輯,主要為其他模塊提供通用功能。
  • 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 模塊:

  • 應(yīng)用概述: genCode 模塊可能是一個(gè)工具模塊,用于生成代碼或加速開發(fā)過程。
  • 主要功能: 可能包含代碼生成器、模板引擎等,用于生成基礎(chǔ)代碼結(jié)構(gòu)。
  • 角色定位: 可能是一個(gè)開發(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 模塊:

  • 應(yīng)用概述: business 模塊是項(xiàng)目的業(yè)務(wù)核心,包含實(shí)際的業(yè)務(wù)邏輯和數(shù)據(jù)庫訪問。
  • 主要功能: 包含與業(yè)務(wù)相關(guān)的服務(wù)、領(lǐng)域邏輯、數(shù)據(jù)庫訪問(如 MyBatis、Redis)、業(yè)務(wù)配置等。
  • 角色定位: 為整個(gè)項(xiàng)目提供具體的業(yè)務(wù)功能,可能包括訂單處理、用戶管理等。
  • 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 模塊:

  • 應(yīng)用概述: tripartite 模塊可能是與第三方服務(wù)集成的模塊,處理外部服務(wù)的調(diào)用和數(shù)據(jù)交互。
  • 主要功能: 包含與第三方服務(wù)通信的代碼、集成配置等。
  • 角色定位: 為整個(gè)項(xiàng)目提供與外部系統(tǒng)的連接,可能包括支付網(wǎng)關(guān)、第三方 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 模塊:

  • 應(yīng)用概述: admin 模塊可能是項(xiàng)目的管理界面,提供對系統(tǒng)的監(jiān)控和管理功能。
  • 主要功能: 包含管理界面的業(yè)務(wù)邏輯、前端代碼、可能的后臺服務(wù)等。
  • 角色定位: 為管理員提供系統(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 項(xiàng)目中的 POM 文件導(dǎo)入到當(dāng)前項(xiàng)目中。這樣,可以實(shí)現(xiàn)模塊化的項(xiàng)目管理。

使用 import 語句導(dǎo)入其他項(xiàng)目的依賴時(shí),可以在導(dǎo)入時(shí)指定版本,使得項(xiàng)目能夠更加靈活地選擇使用依賴的版本。

可以將相關(guān)的模塊組織到不同的 Maven 項(xiàng)目中,通過 import 在一個(gè)父項(xiàng)目中統(tǒng)一管理。這有助于更好地組織項(xiàng)目的結(jié)構(gòu)。

源碼參考

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

以上就是SpringBoot Maven項(xiàng)目中Model間的最佳繼承設(shè)計(jì)詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot Maven模塊繼承設(shè)計(jì)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot集成Neo4j的詳細(xì)教程

    SpringBoot集成Neo4j的詳細(xì)教程

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

    Java踩坑記錄之BigDecimal類

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

    生產(chǎn)者消費(fèi)者模型ThreadLocal原理及實(shí)例詳解

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

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

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

    java?WebSocket?服務(wù)端實(shí)現(xiàn)代碼

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

    聊一聊concurrenthashmap的size方法原理

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

    Java中Elasticsearch的核心概念詳解

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

    Java中Aspose組件進(jìn)行多文檔間的轉(zhuǎn)換方法總結(jié)

    在本篇文章里我們給大家分享了關(guān)于Java中Aspose組件進(jìn)行多文檔間的轉(zhuǎn)換方法內(nèi)容,需要的朋友們學(xué)習(xí)下吧。
    2019-02-02
  • 常用的Java數(shù)據(jù)結(jié)構(gòu)知識點(diǎn)匯總

    常用的Java數(shù)據(jù)結(jié)構(gòu)知識點(diǎn)匯總

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

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

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

最新評論