SpringBoot 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)的連接,可能包括支付網(wǎ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模塊繼承設計的資料請關注腳本之家其它相關文章!
相關文章
Java數(shù)據(jù)結構之二叉樹遍歷算法與底層實現(xiàn)方法剖析
只有通過大量的練習,才能逐漸熟悉常見的數(shù)據(jù)結構和算法技巧,從而更快地解決問題,這篇文章主要介紹了Java數(shù)據(jù)結構之二叉樹遍歷算法與底層實現(xiàn)方法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2026-06-06
spring注入在有常量的情況下使用@AllArgsConstructor操作
這篇文章主要介紹了spring注入在有常量的情況下使用@AllArgsConstructor操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
關于SpringBoot獲取IOC容器中注入的Bean(推薦)
本文通過實例代碼給大家詳解了springboot獲取ioc容器中注入的bean問題,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2018-05-05
SpringBoot實現(xiàn)Word轉PDF?的完整思路與示例代碼詳解
本文介紹了在SpringBoot中實現(xiàn)將Word轉換為PDF的多種方案,包括docx4j、LibreOffice、ApachePOI+iText等主流方案,針對不同需求提供了詳細的方案對比,代碼示例以及注意事項,希望對大家有所幫助2026-05-05

