大家好,我是鵬磊。
最近心血來潮準備賭上自己這些年學習的知識做一個 耗盡心血的後台管理計畫 - Xiaole ,隨即自信的開啟IDEA準備大展身手,結果架構設計這塊怎麽構建都不是很滿意,參考了多個優秀的開源計畫之後,用自己淺薄的知識總結了一套Model設計方案。
博主自己設計,僅供參考。
所以說一個優秀的Spring Boot模組設計需要具備那些基本要素
1、 單一職責原則(SingleResponsibilityPrinciple):
每個模組應該專註於執行一個清晰且明確定義的功能,遵循單一職責原則,以降低模組的復雜性。
2、 高內聚性(HighCohesion):
模組內的元件和類應該緊密相關,共同實作模組的目標。高內聚性有助於提高程式碼的可理解性和可維護性。
3、 低耦合性(LowCoupling):
模組之間的依賴應該盡可能減少,以便修改一個模組時不會對其他模組造成影響。低耦合性有助於實作獨立的模組。
4、 可重用性(Reusability):
模組應該設計成可重用的元件,以便在計畫的不同部份或未來的計畫中能夠復用。這透過提取通用功能到獨立的模組(如
common
模組)來實作。
5、 清晰的界限和介面(ClearBoundariesandInterfaces):
模組之間的界限和介面應該明確,確保模組之間的互動清晰可見。這有助於團隊成員理解各個模組的職責。
6、 適度的模組化(ModerateModularity):
將功能相近的元件放在同一模組中,但避免過度細化,以免引入不必要的復雜性。適度的模組化有助於提高計畫的可維護性。
如果你近期準備面試跳槽,建議在ddkk.com線上刷題,涵蓋 一萬+ 道 Java 面試題,幾乎覆蓋了所有主流技術面試題,還有市面上最全的技術五百套,精品系列教程,免費提供。
7、 分層架構(LayeredArchitecture):
透過采用分層架構,如控制層、服務層、數據存取層等,有助於模組的劃分和管理。這有助於程式碼的組織和理解。
8、 依賴倒置原則(DependencyInversionPrinciple):
模組之間的依賴關系應該依賴於抽象而不是具體的實作。這有助於降低模組之間的耦合性。
9、 測試容易性(Testability):
模組應該設計成易於測試的單元,以便進行單元測試、整合測試和端到端測試。
10、 適應未來擴充套件(AdaptabilityforFutureExtension):
模組設計應該考慮未來的擴充套件性,以便在需求變化時能夠輕松地添加新功能或模組。
開啟IDEA 開始建立計畫
博主目前腦子裏邊有一個初步的架構。整體計畫使用的是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 的核心配置、通用的攔截器、全域例外處理等。
角色定位: 不包含具體的業務邏輯,主要為其他模組提供基礎設施。
pom檔 :↓
<projectxmlns="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 模組用於存放通用的工具類和公共配置,為整個計畫提供共享的基礎。
主要功能: 包含通用的工具方法、常量、公共配置等。
角色定位: 不包含具體的業務邏輯,主要為其他模組提供通用功能。
pom檔 :↓
<projectxmlns="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 模組可能是一個工具模組,用於生成程式碼或加速開發過程。
主要功能: 可能包含程式碼生成器、樣版引擎等,用於生成基礎程式碼結構。
角色定位: 可能是一個開發輔助工具,用於提高程式碼生成的效率。
pom檔 :↓
<projectxmlns="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 模組是計畫的業務核心,包含實際的業務邏輯和資料庫存取。
主要功能: 包含與業務相關的服務、領域邏輯、資料庫存取(如 MyBatis、Redis)、業務配置等。
角色定位: 為整個計畫提供具體的業務功能,可能包括訂單處理、使用者管理等。
pom檔 :↓
<projectxmlns="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 模組可能是與第三方服務整合的模組,處理外部服務的呼叫和數據互動。
如果你近期準備面試跳槽,建議在ddkk.com線上刷題,涵蓋 一萬+ 道 Java 面試題,幾乎覆蓋了所有主流技術面試題,還有市面上最全的技術五百套,精品系列教程,免費提供。
主要功能: 包含與第三方服務通訊的程式碼、整合配置等。
角色定位: 為整個計畫提供與外部系統的連線,可能包括支付閘道器、第三方 API 等。
pom檔 :↓
<projectxmlns="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 模組可能是計畫的管理界面,提供對系統的監控和管理功能。
主要功能: 包含管理界面的業務邏輯、前端程式碼、可能的後台服務等。
角色定位: 為管理員提供系統監控、使用者管理等功能。
pom檔 :↓
<?xml version="1.0" encoding="UTF-8"?>
<projectxmlns="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"?>
<projectxmlns="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 檔匯入到當前計畫中。這樣,可以實作模組化的計畫管理。
使用 import 語句匯入其他計畫的依賴時,可以在匯入時指定版本,使得計畫能夠更加靈活地選擇使用依賴的版本。
可以將相關的模組組織到不同的 Maven 計畫中,透過 import 在一個父計畫中統一管理。這有助於更好地組織計畫的結構。
🔥 磊哥私藏精品 熱門推薦 🔥