mall :hutool專案原始碼解析

2023-09-03 18:00:33

一、mall開源專案

1.1 來源

mall學習教學,架構、業務、技術要點全方位解析。mall專案(50k+star)是一套電商系統,使用現階段主流技術實現。涵蓋了SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5.0、MongoDB 4.2.5、Mysql5.7等技術,採用Docker容器化部署。

專案github地址: github.com

1.2 專案轉移

可以把github上的專案轉移到gitee上,方便克隆到idea。

具體步驟如下:

1.3 專案克隆

由於github部署在國外,雖然idea也支援從github上拉取,但是克隆速度太慢,所以才推薦上述匯入gitee後在克隆專案到idea。

具體的克隆步驟過於簡單和常規化,讀者可自行完成,或百度一下~

二、Hutool工具類庫

API檔案Overview (hutool-碼雲(gitee.com))

hutool開發檔案: Hutool (開發時遇到需求在自行查檔案,先有個印象)

2.1 Hutool 簡介

Hutool 是一個小而全的Java工具類庫,通過靜態方法封裝,降低相關API的學習成本,提高工作效率,使Java擁有函數式語言般的優雅。

Hutool中的工具方法來自每個使用者的精雕細琢,它涵蓋了Java開發底層程式碼中的方方面面,它既是大型專案開發中解決小問題的利器,也是小型專案中的效率擔當;

Hutool是專案中「util」包友好的替代,它節省了開發人員對專案中公用類和公用工具方法的封裝時間,使開發專注於業務,同時可以最大限度的避免封裝不完善帶來的bug。

三、原始碼解析

mall-tiny-hutool專案原始碼只是展示了一些開發中常用的工具包,其它沒有展示的可以自行了解上方的hutool開發檔案,檔案講的挺詳細的。

解析內容:下方的解析內容大部分在圖中解釋,外面就不做過多的闡述。

3.1 整合與設定

直接拿原始碼分析,只分析與hutool有關的部分,設計業務部分不做過多的描述,其它部分讀者請自行看原始碼分析。

專案啟動:只需要啟動mall-tiny-hutool模組的部分即可。

啟動所需:啟動mysql5的服務,建立資料庫,並匯入表(sql檔案位置在,專案同級目錄的document資料夾裡)。

ps:記得修改資料庫連線的設定資訊。

3.1.1 匯入依賴

pom檔案中匯入hutool的相關依賴。

3.1.2 新增設定

3.2 核心工具類

對於swagger介面檔案,由於介面都是get請求,且返回的都是操作成功和null資料,就不做過多的展示,只展示一次,瞭解接下來有那些工具類的使用。

下面的例子都是該工具類的一小部分,我是先看完官方的開發檔案在對程式碼分析的,建議看到那個工具類就把相應的官方檔案看一遍,加深印象。

3.2.1 AnnotationUtil使用:註解工具類

註解工具類開發檔案定位註解工具-AnnotationUtil | Hutool

1、控制層介面

方法中使用了 AnnotationUtil 工具類來獲取指定類上的註解資訊,包括註解列表和註解的屬性值,並將結果列印出來

2、idea控制檯列印的紀錄檔資訊

3.2.2 BeanUtil使用:JavaBean的工具類

Bean工具類開發檔案定位Bean工具-BeanUtil | Hutool

1、控制層介面

2、idea控制檯列印的紀錄檔資訊

3.2.3 CaptchaUtil使用:圖形驗證碼

CaptchaUtil工具類開發檔案定位概述 | Hutool

1、控制層介面

2、生成圖形驗證碼效果

3.2.4 ClassPath單一資源存取類:在classPath下查詢檔案

ClassPath工具類開發檔案定位ClassPath資源存取-ClassPathResource | Hutool

1、控制層介面

2、idea控制檯列印的紀錄檔資訊

3.2.5 CollUtil使用:集合工具類

CollUtil工具類開發檔案定位集合工具-CollUtil | Hutool

1、控制層介面

2、idea控制檯列印的紀錄檔資訊

3.2.6 Convert使用:型別轉換工具類

Convert工具類開發檔案定位型別轉換工具類-Convert | Hutool

1、控制層介面

3.2.7 DateUtil使用:日期時間工具

DateUtil工具類開發檔案定位日期時間工具-DateUtil | Hutool

1、控制層介面

3.2.8 DigestUtil使用:摘要演演算法工具類

DigestUtil工具類開發檔案定位摘要加密-Digester | Hutool

官方開發檔案還有很多其他的加密演演算法,可自行去了解。

1、控制層介面

2、idea控制檯列印的紀錄檔資訊

3.2.9 HttpUtil使用:Http請求工具類

HttpUtil工具類開發檔案定位Http使用者端工具類-HttpUtil | Hutool

官方開發檔案還有很多其他的http使用者端的用法,可自行去了解。

1、控制層介面

2、idea控制檯列印的紀錄檔資訊

3.2.10 JSONUtil使用:JSON解析工具類

JSONUtil工具類開發檔案定位JSON工具-JSONUtil | Hutool

官方開發檔案還有JSON物件和JSON陣列的用法,可自行去了解。

1、控制層介面

2、idea控制檯列印的紀錄檔資訊

3.2.11 MapUtil使用:Map工具類

MapUtil工具類開發檔案定位Map工具-MapUtil | Hutool

官方開發檔案還有Map的其它用法,可自行去了解。

1、控制層介面

3.2.12 NumberUtil使用:數位處理工具類

NumberUtil工具類開發檔案定位數位工具-NumberUtil | Hutool

1、控制層介面

3.2.13 ReflectUtil使用:Java反射工具類

ReflectUtil工具類開發檔案定位反射工具-ReflectUtil | Hutool

1、控制層介面

2、idea控制檯列印的紀錄檔資訊

3.2.14 SecureUtil使用:加密解密工具類

SecureUtil工具類開發檔案定位加密解密工具-SecureUtil | Hutool

1、控制層介面

3.2.15 StrUtil使用:字串工具

StrUtil工具類開發檔案定位字串工具-StrUtil | Hutool

1、控制層介面

3.2.16 Validator使用:欄位驗證器

Validator工具類開發檔案定位欄位驗證器-Validator | Hutool

1、控制層介面

2、idea控制檯列印的紀錄檔資訊

四、總結

感想是:先出糙的瞭解一下,當業務需要,先檢視官方的開發檔案,若果未解決就可以以開發檔案為導向,來定位到API檔案,從而完成業務,

本文是有我先從實際專案中獲取需求,從而對Hutool工具類庫的學習,結合原始碼來學習,從mall開源專案中學習Hutool,感覺收穫頗深,希望這篇文章對你們也會有所幫助。

後續我也會結合該框架學習一下其他的技術棧。

盈若安好,便是晴天