最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

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

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

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

低耦合性 (Low Coupling):

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

可重用性 (Reusability):

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

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

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

適度的模塊化 (Moderate Modularity):

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

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

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

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

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

測試容易性 (Testability):

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

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

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

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

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

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

項目目錄結(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 模塊是整個項目的核心,專注于提供通用的配置和基礎(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 模塊用于存放通用的工具類和公共配置,為整個項目提供共享的基礎(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 模塊可能是一個工具模塊,用于生成代碼或加速開發(fā)過程。
  • 主要功能: 可能包含代碼生成器、模板引擎等,用于生成基礎(chǔ)代碼結(jié)構(gòu)。
  • 角色定位: 可能是一個開發(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 模塊是項目的業(yè)務(wù)核心,包含實際的業(yè)務(wù)邏輯和數(shù)據(jù)庫訪問。
  • 主要功能: 包含與業(yè)務(wù)相關(guān)的服務(wù)、領(lǐng)域邏輯、數(shù)據(jù)庫訪問(如 MyBatis、Redis)、業(yè)務(wù)配置等。
  • 角色定位: 為整個項目提供具體的業(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ù)通信的代碼、集成配置等。
  • 角色定位: 為整個項目提供與外部系統(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 模塊可能是項目的管理界面,提供對系統(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 項目中的 POM 文件導(dǎo)入到當(dāng)前項目中。這樣,可以實現(xiàn)模塊化的項目管理。

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

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

源碼參考

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

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

相關(guān)文章

  • Java多線程之同步鎖-lock詳解

    Java多線程之同步鎖-lock詳解

    這篇文章主要為大家詳細(xì)介紹了Java多線程中同步鎖-lock的原理與使用,文中的示例代碼講解詳細(xì),對我們了解線程有一定幫助,需要的可以參考一下
    2022-10-10
  • Java數(shù)據(jù)結(jié)構(gòu)之二叉樹遍歷算法與底層實現(xiàn)方法剖析

    Java數(shù)據(jù)結(jié)構(gòu)之二叉樹遍歷算法與底層實現(xiàn)方法剖析

    只有通過大量的練習(xí),才能逐漸熟悉常見的數(shù)據(jù)結(jié)構(gòu)和算法技巧,從而更快地解決問題,這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之二叉樹遍歷算法與底層實現(xiàn)方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-06-06
  • 深入解析Java的線程同步以及線程間通信

    深入解析Java的線程同步以及線程間通信

    這篇文章主要介紹了Java的線程同步以及線程間通信,多線程編程是Java學(xué)習(xí)中的重點和難點,需要的朋友可以參考下
    2015-09-09
  • Spring Boot 表單驗證篇

    Spring Boot 表單驗證篇

    在表單提交的時候,我們需要進(jìn)行驗證。下面通過本篇文章給大家介紹Spring Boot 表單驗證篇,需要的朋友可以參考下
    2017-08-08
  • 詳解通過maven運行項目的兩種方式

    詳解通過maven運行項目的兩種方式

    這篇文章主要介紹了通過maven運行項目的兩種方式,給大家提到了通過tomcat的方式來啟動maven項目的方法,通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • spring注入在有常量的情況下使用@AllArgsConstructor操作

    spring注入在有常量的情況下使用@AllArgsConstructor操作

    這篇文章主要介紹了spring注入在有常量的情況下使用@AllArgsConstructor操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 關(guān)于SpringBoot獲取IOC容器中注入的Bean(推薦)

    關(guān)于SpringBoot獲取IOC容器中注入的Bean(推薦)

    本文通過實例代碼給大家詳解了springboot獲取ioc容器中注入的bean問題,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-05-05
  • Springmvc異常映射2種實現(xiàn)方法

    Springmvc異常映射2種實現(xiàn)方法

    這篇文章主要介紹了Springmvc異常映射2種實現(xiàn)方法以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。,需要的朋友可以參考下
    2020-05-05
  • Java設(shè)計模式之策略模式詳解

    Java設(shè)計模式之策略模式詳解

    這篇文章主要為大家詳細(xì)介紹了Java設(shè)計模式之策略模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • SpringBoot實現(xiàn)Word轉(zhuǎn)PDF?的完整思路與示例代碼詳解

    SpringBoot實現(xiàn)Word轉(zhuǎn)PDF?的完整思路與示例代碼詳解

    本文介紹了在SpringBoot中實現(xiàn)將Word轉(zhuǎn)換為PDF的多種方案,包括docx4j、LibreOffice、ApachePOI+iText等主流方案,針對不同需求提供了詳細(xì)的方案對比,代碼示例以及注意事項,希望對大家有所幫助
    2026-05-05

最新評論

伊宁县| 松江区| 齐河县| 通许县| 黑山县| 腾冲县| 茶陵县| 报价| 昌乐县| 邳州市| 广水市| 民乐县| 沈丘县| 曲靖市| 西青区| 台州市| 永善县| 武隆县| 池州市| 永嘉县| 闸北区| 朝阳市| 侯马市| 通河县| 赤城县| 城步| 二连浩特市| 屏东市| 沙雅县| 澳门| 崇明县| 英山县| 富阳市| 枣强县| 民勤县| 德格县| 赫章县| 双牌县| 正镶白旗| 巍山| 江永县|