精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SpringBoot 22條最佳實踐

jf_ro2CN3Fa ? 來源:medium ? 2023-10-08 17:10 ? 次閱讀

Spring Boot 是一種廣泛使用且非常流行的企業級高性能框架。以下是一些最佳實踐和一些技巧,我們可以使用它們來改進 Spring Boot 應用程序并使其更加高效。這篇文章會有點長,完整讀完文章需要一些時間。

1.正確的包目錄風格

正確的包目錄將有助于輕松理解代碼和應用程序的流程。

我們可以使用有意義的包目錄來構建我們的應用程序。

我們可以將所有控制器包含在單獨的包中,將服務包含在單獨的包中,將 util 類包含在單獨的包中等等。這種風格在小型微服務中非常方便。

如果我們正在處理龐大的代碼庫,則可以使用基于功能模塊的方法。我們可以根據我們的要求來決定。

基于類型

1fd30378-65af-11ee-939d-92fbcf53809c.png

基于功能模塊

1fdbbc70-65af-11ee-939d-92fbcf53809c.png

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://github.com/YunaiV/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

2.使用設計模式

沒什么好說的,設計模式已經是現代編程中編寫可維護、可擴展代碼的最佳實踐。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://github.com/YunaiV/yudao-cloud

視頻教程:https://doc.iocoder.cn/video/

3.使用 Spring Boot starter

這是 Spring Boot 的一個很酷的功能。

我們可以非常輕松地使用啟動器依賴項,而無需一一添加單個依賴項。這些入門依賴項已與所需的依賴項捆綁在一起。

例如,如果我們添加 spring-boot-starter-web 依賴項,默認情況下它會與 jackson、spring-core、spring-mvc 和 spring-boot-starter-tomcat 依賴項捆綁在一起。

所以我們不需要關心單獨添加依賴項。

它還可以幫助我們避免版本不匹配。

4.使用生產版本的依賴項

始終建議使用最新的穩定 GA 版本。

有時它可能會因 Java 版本、服務器版本、應用程序類型等而有所不同。

不要使用同一包的不同版本,如果存在多個依賴項,請始終使用指定版本。

1ff01f44-65af-11ee-939d-92fbcf53809c.png

5.使用 Lombok

作為一名 Java 開發人員,我們可能聽說過 Lombok 項目。

Lombok 是一個 Java 庫,可用于減少代碼并允許我們使用其注釋編寫干凈的代碼。

例如,我們可能在某些類(如實體、請求/響應對象、dtos 等)中使用大量的 getter 和 setter 行。

但如果你使用 Lombok,它只是一行,你可以根據你的要求使用@Data、@Getter 或@Setter。

我們也可以使用 Lombok 記錄器注釋。推薦@Slf4j。

檢查此文件以供參考。

6.將構造函數注入與 Lombok 一起使用

1ff9986c-65af-11ee-939d-92fbcf53809c.png

當我們談論依賴注入時,有兩種類型。

一種是“構造函數注入”,另一種是“setter 注入”。除此之外,我們還可以使用非常流行的@Autowired 注釋來使用“字段注入”。

但我們強烈建議使用構造函數注入而不是其他類型。因為它允許應用程序在初始化時初始化所有必需的依賴項。

這對于單元測試非常有用。

重要的是,我們可以使用 Lombok 的 @RequiredArgsConstructor 注釋來使用構造函數注入。

檢查此示例控制器以供參考。

7.使用 slf4j 日志

20032e2c-65af-11ee-939d-92fbcf53809c.png

日志記錄非常重要。

如果我們的應用程序在生產過程中出現問題,日志記錄是找出根本原因的唯一方法。

因此,在添加記錄器、日志消息類型、記錄器級別和記錄器消息之前應該仔細考慮。

不要使用 System.out.print()

建議將 Slf4j 與 Spring Boot 中默認的日志框架 logback 一起使用。

始終使用 slf4j 的 {} 占位符語法,避免在記錄器消息中使用字符串插值。因為字符串插值會消耗更多的內存。

我們可以使用 Lombok @Slf4j 注釋非常輕松地創建日志記錄器。

如果我們處于微服務環境中,則可以使用 ELK 技術棧。

8.控制器僅用于路由

200d751c-65af-11ee-939d-92fbcf53809c.png

控制器專用于路由。

它是無狀態且單身的。

DispatcherServlet 將檢查控制器上的 @RequestMapping

控制器是請求的最終目標,請求將交給服務層并由服務層處理。

業務邏輯不應位于控制器中。

9.使用Service來實現業務邏輯

完整的業務邏輯包含驗證、緩存等。

與持久層通信并接收結果。

Service也是單例的。

10.避免空指針異常

為了避免 NullPointerException,我們可以使用 java.util 包中的 Optional。

我們還可以使用空安全庫。例如:Apache Commons StringUtils

對已知對象調用 equals() 和 equalsIgnoreCase() 方法。

使用 valueOf() 而不是 toString()

使用基于 IDE 的 @NotNull 和 @Nullable 注釋。

11.使用集合框架的最佳實踐

對我們的數據集使用適當的集合。

將 forEach 與 Java 8 功能結合使用,并避免使用舊版 for 循環。

使用接口類型而不是實現。

使用 isEmpty() 而不是 size() 以獲得更好的可讀性。

不返回空值,可以返回空集合。

如果我們使用對象作為要存儲在基于哈希的集合中的數據,則應重寫 equals() 和 hashCode() 方法。請查看這篇文章“HashMap 內部是如何工作的”。

12.使用分頁

202945c6-65af-11ee-939d-92fbcf53809c.png

這將提高應用程序的性能。

如果我們使用 Spring Data JPA,則 PagingAndSortingRepository 使分頁的使用變得非常容易且幾乎不費吹灰之力。

13.使用緩存

在談論應用程序性能時,緩存是另一個重要因素。

默認情況下,Spring Boot 通過 ConcurrentHashMap 提供緩存,我們可以通過 @EnableCaching 注解來實現這一點。如果我們對默認緩存不滿意,可以使用 Redis、Hazelcast 或任何其他分布式緩存實現。

Redis 和 Hazelcast 是內存緩存方法。我們還可以使用數據庫緩存實現。

14.使用自定義異常處理程序和全局異常處理

這在使用大型企業級應用程序時非常重要。

除了一般異常之外,我們可能還會有一些場景來識別某些特定的錯誤情況。

異常顧問可以使用@ControllerAdvice 創建,我們可以創建具有有意義細節的單獨異常。

它將使得將來識別和調試錯誤變得更加容易。

15.使用自定義響應對象

自定義響應對象可用于返回包含某些特定數據的對象,并滿足 HTTP 狀態代碼、API 代碼、消息等要求。

我們可以使用構建器設計模式來創建具有自定義屬性的自定義響應對象。

16.刪除不必要的代碼、變量、方法和類。

205c0f4c-65af-11ee-939d-92fbcf53809c.png

未使用的變量聲明將占用一些內存。

刪除未使用的方法、類等,因為它會影響應用程序的性能。

盡量避免嵌套循環。我們可以使用map代替。

17.使用注釋

注釋是一個很好的做法。

不要對一切代碼發表注釋。相反,我們可以使用類、函數、方法、變量等有意義的單詞編寫描述性代碼。

刪除注釋代碼、誤導性注釋和故事型注釋。

我們可以使用注釋進行警告,并解釋一些乍一看難以理解的內容。

18.對類、方法、函數、變量和其他屬性使用有意義的詞語。

206d8c86-65af-11ee-939d-92fbcf53809c.png

這看起來很簡單,但影響卻是巨大的。

始終使用正確的有意義且可搜索的命名約定以及正確的大小寫。

通常,我們在聲明類、變量和常量時使用名詞或短語。例如:字符串 firstName,const isValid

我們可以使用帶有形容詞的動詞和短語來表示函數和方法。例如:readFile()、sendData()

避免使用縮寫變量名和意圖揭示的名稱。例如:int i;字符串 getExUsr;

如果我們有意義地使用此功能,則可以減少聲明注釋行。由于它具有有意義的名稱,新開發人員可以通過閱讀代碼輕松理解。

19.使用正確的大小寫進行聲明

207b35ac-65af-11ee-939d-92fbcf53809c.png

有許多不同的大小寫,如大寫、小寫、駝峰命名、帕斯卡命名、蛇命名、大蛇式命名、短橫線命名等。

但我們需要確定哪個案例專用于哪個變量。

通常,我會遵循,

類 — 帕斯卡命名

方法和變量 — 駝峰命名

常量 — 大蛇式命名

數據庫相關字段 — 短橫線命名

這只是一個例子,它可能與我們在公司遵循的標準不同。

20.簡單點

始終嘗試編寫簡單、可讀的代碼。

同樣簡單的邏輯可以用不同的方式實現,但是如果不可讀或不理解就很難理解。

有時復雜的邏輯會消耗更多的內存。

編寫代碼時嘗試使用 KISS、DRY 和 SOLID 原則。我將在以后的文章中解釋這一點。

21.使用通用的代碼格式樣式

208cfa8a-65af-11ee-939d-92fbcf53809c.png

格式樣式因開發人員而異。編碼風格的改變也被認為是一種改變,并且會使代碼合并變得非常困難。

為了避免這種情況,團隊可以采用通用的編碼格式。

22.使用 SonarLint 插件

這對于識別小錯誤和最佳實踐非常有用,以避免不必要的錯誤和代碼質量問題。

我們可以將插件安裝到我們最喜歡的 IDE 中。

最后

至此本文講解內容到此完畢感謝閱讀,希望本文能對你有所幫助。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模塊
    +關注

    關注

    7

    文章

    2672

    瀏覽量

    47342
  • 控制器
    +關注

    關注

    112

    文章

    16206

    瀏覽量

    177427
  • SpringBoot
    +關注

    關注

    0

    文章

    173

    瀏覽量

    169

原文標題:SpringBoot 22 條最佳實踐

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C編程最佳實踐.doc

    C編程最佳實踐.doc
    發表于 08-17 14:37

    Dockerfile的最佳實踐

    ”微服務一龍“最佳指南-“最佳實踐”篇:Dockerfile
    發表于 07-11 16:22

    SpringBoot知識總結

    SpringBoot干貨學習總結
    發表于 08-01 10:40

    變量聲明最佳實踐?

    所以我們開始編寫32位和16位代碼,并過渡到MPLAB X和XC編譯器。我想到的一個主題是聲明變量的最佳實踐。常規IpType。h或類型。h pr STDIN?;騃t8或字節char等任何想法,走哪條路?
    發表于 09-30 12:01

    怎樣去使用springboot

    怎樣去使用springboot呢?學習springboot需要懂得哪些?
    發表于 10-25 07:13

    虛幻引擎的紋理最佳實踐

    紋理是游戲不可或缺的一部分。 這是一個藝術家可以直接控制的領域,以提高游戲的性能。 本最佳實踐指南介紹了幾種紋理優化,這些優化可以幫助您的游戲運行得更流暢、看起來更好。 最佳實踐系列指
    發表于 08-28 06:39

    MySql5.6性能優化最佳實踐

    MySql5.6性能優化最佳實踐
    發表于 09-08 08:47 ?13次下載
    MySql5.6性能優化<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    “中國制造2025”大數據決策支撐體系獲評最佳實踐成果

    4月22-24日,首屆數字中國建設峰會在福州舉行。在22日下午舉辦的數字中國建設年度最佳實踐推介活動中,由工業和信息化部辦公廳牽頭打造的“中國制造2025”大數據決策支撐體系從全國14
    發表于 05-22 21:33 ?1543次閱讀

    DevOps最佳實踐

      遵循上述最佳實踐,組織可以開發和自動化其解決方案的交付過程,以有效地實現其業務目標。
    的頭像 發表于 08-15 14:41 ?925次閱讀

    圖像傳感器處理和最佳實踐

    圖像傳感器處理和最佳實踐
    發表于 11-15 20:30 ?0次下載
    圖像傳感器處理和<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    什么是 SpringBoot?

    本文從為什么要有 `SpringBoot`,以及 `SpringBoot` 到底方便在哪里開始入手,逐步分析了 `SpringBoot` 自動裝配的原理,最后手寫了一個簡單的 `start` 組件,通過實戰來體會了 `
    的頭像 發表于 04-07 11:28 ?1265次閱讀
    什么是 <b class='flag-5'>SpringBoot</b>?

    SAN管理最佳實踐指南

    電子發燒友網站提供《SAN管理最佳實踐指南.pdf》資料免費下載
    發表于 08-29 09:20 ?0次下載
    SAN管理<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>指南

    SAN設計和最佳實踐指南

    電子發燒友網站提供《SAN設計和最佳實踐指南.pdf》資料免費下載
    發表于 09-01 11:02 ?0次下載
    SAN設計和<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>指南

    Windows 10遷移的最佳實踐

    電子發燒友網站提供《Windows 10遷移的最佳實踐.pdf》資料免費下載
    發表于 09-07 15:37 ?0次下載
    Windows 10遷移的<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    RTOS開發最佳實踐

    基于RTOS編寫應用程序時,有一些要注意事項。在本節中,您將學習RTOS開發最佳實踐,例如POSIX合規性、安全性和功能安全認證。
    的頭像 發表于 08-20 11:24 ?408次閱讀