springboot項目中常用的工具類和api

在Spring Boot項目中,開發者通常會依賴一些工具類API來簡化開發、提高效率。以下是一些常用的工具類及其典型應用場景,涵蓋 Spring 原生工具第三方庫(如Hutool、Guava)Java 自帶工具


1. Spring Framework 自帶工具類

(1) StringUtils

  • 包名: org.springframework.util.StringUtils
  • 功能: 字符串判空、分割、拼接等。
  • 常用方法:
    boolean isEmpty(Object str);          // 判斷字符串是否為空(比Java原生更安全)
    String[] tokenizeToStringArray(...);  // 字符串分割
    String collectionToDelimitedString(...); // 集合轉字符串(如用逗號連接)
    

(2) CollectionUtils

  • 包名: org.springframework.util.CollectionUtils
  • 功能: 集合操作。
    boolean isEmpty(Collection<?> coll);  // 判斷集合是否為空
    boolean containsAny(Collection<?> source, Collection<?> candidates); // 檢查是否有交集
    

(3) FileCopyUtils

  • 包名: org.springframework.util.FileCopyUtils
  • 功能: 文件復制、流操作。
    byte[] copyToByteArray(File file);    // 文件轉字節數組
    void copy(InputStream in, OutputStream out); // 流復制
    

(4) ResourceUtils

  • 包名: org.springframework.util.ResourceUtils
  • 功能: 資源文件讀取。
    File getFile(String location);        // 獲取資源文件(如classpath:config.yml)
    

2. Spring Boot 特有工具

(1) ObjectMapper (JSON處理)

  • 包名: com.fasterxml.jackson.databind.ObjectMapper
  • 場景: JSON序列化/反序列化(Spring Boot默認集成Jackson)。
    String json = objectMapper.writeValueAsString(obj); // 對象轉JSON
    User user = objectMapper.readValue(json, User.class); // JSON轉對象
    

(2) RestTemplate / WebClient (HTTP請求)

  • 包名: org.springframework.web.client.RestTemplate(同步)
    org.springframework.web.reactive.function.client.WebClient(異步)
  • 示例:
    String result = restTemplate.getForObject("https://api.example.com", String.class);
    

(3) JdbcTemplate (數據庫操作)

  • 包名: org.springframework.jdbc.core.JdbcTemplate
  • 場景: 簡化JDBC操作。
    List<User> users = jdbcTemplate.query("SELECT * FROM user", new BeanPropertyRowMapper<>(User.class));
    

3. 第三方工具庫

(1) Apache Commons

  • StringUtils:
    boolean isBlank = org.apache.commons.lang3.StringUtils.isBlank(str); // 判斷空白字符串
    
  • FileUtils:
    FileUtils.copyFile(srcFile, destFile); // 文件復制
    

(2) Google Guava

  • 集合工具:
    List<String> list = Lists.newArrayList("a", "b"); // 快速創建集合
    
  • 字符串處理:
    String joined = Joiner.on(",").join(list); // 集合拼接為字符串
    

(3) Hutool(國產神器)

  • StrUtil:
    boolean isEmpty = StrUtil.isEmpty(str); // 字符串判空
    
  • DateUtil:
    String now = DateUtil.now(); // 當前時間(格式:yyyy-MM-dd HH:mm:ss)
    
  • IdUtil:
    String uuid = IdUtil.randomUUID(); // 生成UUID
    

4. Java 原生工具類

(1) Collections

  • 集合操作:
    Collections.sort(list);               // 排序
    Collections.reverse(list);            // 反轉
    

(2) Arrays

  • 數組操作:
    List<String> list = Arrays.asList("a", "b"); // 數組轉List
    

(3) Files & Paths (NIO)

  • 文件操作:
    byte[] bytes = Files.readAllBytes(Paths.get("file.txt")); // 讀取文件
    

5. 其他高頻工具

(1) ValidationUtils (參數校驗)

  • 包名: org.springframework.validation.ValidationUtils
  • 示例:
    ValidationUtils.rejectIfEmpty(errors, "name", "field.required"); // 校驗字段非空
    

(2) ReflectionUtils (反射工具)

  • 包名: org.springframework.util.ReflectionUtils
  • 場景: 動態調用方法、訪問字段。
    ReflectionUtils.findMethod(User.class, "getName"); // 查找方法
    

(3) StopWatch (性能監控)

  • 包名: org.springframework.util.StopWatch
  • 示例:
    StopWatch watch = new StopWatch();
    watch.start("task1");
    // 執行代碼...
    watch.stop();
    System.out.println(watch.prettyPrint()); // 打印耗時
    

總結:如何選擇工具類?

場景推薦工具類
字符串操作StringUtils (Spring/Commons/Hutool)
集合處理CollectionUtils (Spring/Guava)
JSON轉換ObjectMapper (Jackson)
文件讀寫FileUtils (Commons) / Files (NIO)
HTTP請求RestTemplate / WebClient
數據庫操作JdbcTemplate
日期處理DateUtil (Hutool)
反射調用ReflectionUtils (Spring)

合理使用這些工具類可以減少重復代碼,提升開發效率。如果是Spring Boot項目,優先使用Spring生態提供的工具類(如StringUtils),復雜場景再引入第三方庫(如Hutool)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/900773.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900773.shtml
英文地址,請注明出處:http://en.pswp.cn/news/900773.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

23種設計模式-行為型模式-模板方法

文章目錄 簡介場景解決代碼關鍵優化點 總結 簡介 模板方法是一種行為設計模式&#xff0c;它在超類中定義了一個算法的框架&#xff0c;允許子類在不修改結構的情況下重寫算法的特定步驟。 場景 假如你正在開發一款分析文檔的數據挖掘程序。用戶需要向程序輸入各種格式&…

解決Long類型前端精度丟失和正常傳回后端問題

在 Java 后端開發中&#xff0c;可能會遇到前后端交互過程中 Long 類型精度丟失的問題。尤其是在 JavaScript 中&#xff0c;由于其 Number 類型是雙精度浮點數&#xff0c;超過 16 位的 Long 類型值就會發生精度丟失。 問題背景 假設有如下實體類&#xff1a; public class…

PowerPhotos:拯救你的Mac照片庫,告別蘋果原生應用的局限

如果你用Mac管理照片&#xff0c;大概率被蘋果原生「照片」應用折磨過——無法真正并行操作多個圖庫。每次切換圖庫都要關閉重啟&#xff0c;想合并照片得手動導出導入&#xff0c;重復文件更是無處可逃…… 直到我發現了 PowerPhotos&#xff0c;這款專為Mac設計的照片庫管理…

android 14.0 工廠模式 測試音頻的一些問題(高通)

1之前用tinycap&#xff0c;現在得用agmcap 執行----agmcap /data/test.wav -D 100 -d 101 -i CODEC_DMA-LPAIF_RXTX-TX-3 -T 3 報錯1 agmcap data/test.wav -D 100 -d 101 -i CODEC_DMA-LPAIF_RXTX-TX-3 -T 3 Failed to open xml file name /vendor/etc/backend_co…

以庫存系統為核心的ERP底層架構設計

在企業資源計劃&#xff08;ERP&#xff09;系統中&#xff0c;庫存系統常被視為基礎模塊。但在現代企業的數字化進程中&#xff0c;庫存系統不僅僅是一個模塊&#xff0c;它已經逐步演化為驅動整個ERP生態的核心引擎。本文從架構設計的角度&#xff0c;探討為何庫存系統應被置…

辛格迪客戶案例 | 北京舒曼德醫藥實施電子合約系統(eSign)

01 北京舒曼德醫藥科技開發有限公司&#xff1a;醫藥科技的數字化先鋒 北京舒曼德醫藥科技開發有限公司&#xff08;以下簡稱“舒曼德醫藥”&#xff09;作為國內醫藥科技領域的領軍企業&#xff0c;致力于創新藥物的研發、臨床試驗和市場推廣。公司以“科技興藥、質量為先、服…

【UE5】RTS游戲的框選功能+行軍線效果實現

目錄 效果 步驟 一、項目準備 二、框選NPC并移動到指定地點 三、框選效果 效果 步驟 一、項目準備 1. 新建一個俯視角游戲工程 2. 新建一個pawn、玩家控制器和游戲模式,這里分別命名為“MyPawn”、“MyController”和“MyGameMode” 3. 打開“MyGameMode”,設置玩家…

vim定位有問題的腳本/插件的一般方法

在使用vim的過程中可能會遇到一些報錯或其他不符合預期的情況&#xff0c;本文介紹一些我自己常用的定位有問題腳本/插件的方法&#xff08;以下方法同樣適用于neovim&#xff09; 執行了某些命令的情況 這種情況最簡單&#xff0c;使用:h 命令&#xff0c;如果插件有文檔的話…

智能驅動教育變革:人工智能在高中教育中的實踐路徑與創新策略

一、引言 隨著信息技術的飛速發展&#xff0c;人工智能&#xff08;Artificial Intelligence, AI&#xff09;已成為推動社會進步的重要力量。在教育領域&#xff0c;人工智能的應用正逐漸改變著傳統的教學模式和方法&#xff0c;為教育現代化注入了新的活力。高中教育作為教育…

VLAN(虛擬局域網)

一、vlan概述 VLAN(virtual local area network)是一種通過邏輯方式劃分網絡的技術&#xff0c;允許將一個物理網絡劃分為多個獨立的虛擬網絡。每一個vlan是一個廣播域&#xff0c;不同vlan之間的通信需要通過路由器或三層交換機 [!注意] vlan是交換機獨有的技術&#xff0c;P…

spring-cloud-starter-alibaba-seata使用說明

Spring Cloud Alibaba Seata 使用說明 spring-cloud-starter-alibaba-seata 是 Spring Cloud Alibaba 生態中用于集成分布式事務框架 Seata 的核心組件&#xff0c;支持 AT&#xff08;自動補償&#xff09;、TCC&#xff08;手動補償&#xff09; 等模式。 一、依賴配置 添加…

每日一題(小白)暴力娛樂篇23

由題意得知給我們一串數字&#xff0c;我們每次交換兩位&#xff0c;最少交換多少次成功得到有順序的數組。我們以平常的思維去思考&#xff0c;加入給你一串數字獲得最少的交換次數&#xff0c;意味著你的交換后續基本不會變&#xff0c;比如說2 1 3 5 4 中1與2交換后不變&…

Python基礎——Pandas庫

對象的創建 導入 Pandas 時&#xff0c;通常給其一個別名“pd”&#xff0c;即 import pandas as pd。作為標簽庫&#xff0c;Pandas 對象在 NumPy 數組基礎上給予其行列標簽。可以說&#xff0c;列表之于字典&#xff0c;就如 NumPy 之于 Pandas。Pandas 中&#xff0c;所有數…

Spring入門概念 以及入門案例

Spring入門案例 Springspring是什么spring的狹義與廣義spring的兩個核心模塊IoCAOP Spring framework特點spring入門案例不用new方法&#xff0c;如何使用返回創建的對象 容器&#xff1a;IoC控制反轉依賴注入 Spring spring是什么 spring是一款主流的Java EE輕量級開源框架 …

The packaging for this project did not assign a file to the build artifact

問題&#xff1a; maven install報錯&#xff1a;The packaging for this project did not assign a file to the build artifact 解決方案&#xff1a; 方案1&#xff1a; 使用mvn clean install 就可以解決問題&#xff0c; 方案2&#xff1a; 找到lifecycle點clean再點…

C++入門一:C++ 編程概述

一、C 語言與 C 的關系&#xff1a;從 “帶類的 C” 到獨立王國 1.1 血緣關系&#xff1a;C 是 C 的 “超級進化版” 起源&#xff1a;C 由 Bjarne Stroustrup 在 1980 年代開發&#xff0c;最初名為 “C with Classes”&#xff08;帶類的 C&#xff09;&#xff0c;旨在為 …

LLM生成文本的 束搜索參數是什么(Beam Search)

LLM生成文本的 束搜索參數是什么(Beam Search) 束搜索(Beam Search)是一種在序列生成任務(如機器翻譯、文本生成等)中常用的啟發式搜索算法,用于在搜索空間中尋找最優的生成序列。 束搜索的基本概念 在序列生成過程中,每一步都會有多個可能的選擇(即候選標記)。 …

Java-多級排序結合thenComparing()

List<User>,user有個字段有值的時候設置1,沒值就是null,怎么排序根據這個字段排序? 若要對 List<User> 按照某個字段(如 flag,有值時為 1,無值時為 null)排序,可 以使用 ??Comparator?? 結合 null 值處理邏輯。 1. 排序規則說明?? 假設需求是:…

卷積神經網絡(CNN)基礎

目錄 一、應用場景 二、卷積神經網絡的結構 1. 輸入層&#xff08;Input Layer&#xff09; 2. 卷積層&#xff08;Convolutional Layer&#xff09; 3. 池化層&#xff08;Pooling Layer&#xff09; 最大池化&#xff08;max_pooling&#xff09;或平均池化&#xff08;…

Android 中集成 Unity 工程的步驟

在 Adroid 項目中集成 Unity 工程,主要步驟如下: 一、前提條件 1、已有一個 Android 工程項目; 2、Unity 工程已導出為 Android 工程,目錄大概如下: 二、集成步驟 1、在 Android 工程中導入 Unity 工程的 unityLibrary 模塊。 在 Android Studio 中,點擊菜單欄 Fil…