偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

官方親授!Spring Boot 內(nèi)置20個(gè)超強(qiáng)工具類,讓你的項(xiàng)目開發(fā)快人一步!

開發(fā) 項(xiàng)目管理
Spring Boot 不只是框架,更是一套完整的開發(fā)體系。? 這些工具類的存在,正是為了讓你寫更少的代碼,犯更少的錯(cuò),交付更快的產(chǎn)品。

在多數(shù)項(xiàng)目中,開發(fā)者為了方便常常引入各種工具包,比如 Apache Commons、Guava、Hutool…… 但其實(shí),Spring 框架自身早已內(nèi)置了大量經(jīng)過高強(qiáng)度生產(chǎn)驗(yàn)證的核心工具類。這些類不僅功能完備,還能完美融入 Spring Boot 的上下文體系,幫助你寫出更優(yōu)雅、更健壯、更高性能的代碼。

本文將帶你一次性掌握 Spring 官方精選的 20 大工具類, 每個(gè)工具類都配有:

  • 演示類路徑
  • 核心功能點(diǎn)與適用場(chǎng)景
  • 完整可運(yùn)行示例代碼
  • 最佳實(shí)踐與常見陷阱提示

一鍵啟動(dòng)示例項(xiàng)目

# 克隆項(xiàng)目
git clone <repository-url>
cd spring-utils


# 啟動(dòng)交互式菜單模式(推薦)
mvn spring-boot:run


# 或直接運(yùn)行全部示例
mvn spring-boot:run -Dspring-boot.run.arguments="all"

核心工具類

1.StringUtils — 字符串處理終結(jié)者

包路徑:org.springframework.util.StringUtils演示類:/src/main/java/com/icoderoad/utils/StringUtilsDemo.java

功能亮點(diǎn): 字符串判空、去空格、文件路徑處理、字符串拼接。

package com.icoderoad.utils;


import org.springframework.util.StringUtils;


public class StringUtilsDemo {
    public static void main(String[] args) {
        String nickname = "  ICodeRoad  ";
        // 判斷是否有內(nèi)容(自動(dòng) trim)
        if (StringUtils.hasText(nickname)) {
            System.out.println("昵稱有效:" + nickname.trim());
        }


        // 提取文件名
        String filename = StringUtils.getFilename("/home/user/docs/readme.txt");
        System.out.println("文件名:" + filename);


        // 將數(shù)組轉(zhuǎn)為逗號(hào)分隔字符串
        String[] arr = {"Java", "Spring", "Boot"};
        String joined = StringUtils.arrayToCommaDelimitedString(arr);
        System.out.println("拼接結(jié)果:" + joined);
    }
}

2.CollectionUtils — 集合防坑神器

包路徑:org.springframework.util.CollectionUtils演示類:/src/main/java/com/icoderoad/utils/CollectionUtilsDemo.java

package com.icoderoad.utils;


import org.springframework.util.CollectionUtils;
import java.util.*;


public class CollectionUtilsDemo {
    public static void main(String[] args) {
        List<String> tags = Arrays.asList("Java", "Spring", "AOP");


        if (CollectionUtils.isEmpty(tags)) {
            System.out.println("無標(biāo)簽,跳過處理");
            return;
        }


        tags.forEach(tag -> System.out.println("處理標(biāo)簽:" + tag));


        List<String> list1 = Arrays.asList("A", "B", "C");
        List<String> list2 = Arrays.asList("B", "C", "D");
        System.out.println("交集:" + CollectionUtils.intersection(list1, list2));
    }
}

3.ObjectUtils — 對(duì)象安全守護(hù)者

包路徑:org.springframework.util.ObjectUtils演示類:/src/main/java/com/icoderoad/utils/ObjectUtilsDemo.java

package com.icoderoad.utils;


import org.springframework.util.ObjectUtils;


public class ObjectUtilsDemo {
    public static void main(String[] args) {
        Object user = null;
        System.out.println("安全打印:" + ObjectUtils.nullSafeToString(user));


        String[] arr = {"Java", "Spring", "Boot"};
        System.out.println("數(shù)組打?。? + ObjectUtils.nullSafeToString(arr));


        System.out.println("安全比較:" + ObjectUtils.nullSafeEquals("abc", "abc"));
    }
}

4.Assert — 參數(shù)驗(yàn)證大師

包路徑:org.springframework.util.Assert演示類:/src/main/java/com/icoderoad/utils/AssertDemo.java

package com.icoderoad.utils;


import org.springframework.util.Assert;


public class AssertDemo {
    public static void cancelOrder(Long orderId) {
        Assert.notNull(orderId, "訂單ID不能為空");
        Assert.isTrue(orderId > 0, "訂單ID必須大于0");
        System.out.println("取消訂單成功:" + orderId);
    }


    public static void main(String[] args) {
        cancelOrder(1001L);
    }
}

文件與流工具類

5.FileCopyUtils — 文件拷貝終極方案

包路徑:org.springframework.util.FileCopyUtils演示類:/src/main/java/com/icoderoad/utils/FileCopyUtilsDemo.java

package com.icoderoad.utils;


import org.springframework.util.FileCopyUtils;
import java.io.*;


public class FileCopyUtilsDemo {
    public static void main(String[] args) throws Exception {
        File source = new File("source.txt");
        File target = new File("target.txt");
        FileCopyUtils.copy(new FileInputStream(source), new FileOutputStream(target));
        System.out.println("文件拷貝完成!");
    }
}

6.StreamUtils — 流操作輕量專家

包路徑:org.springframework.util.StreamUtils演示類:/src/main/java/com/icoderoad/utils/StreamUtilsDemo.java

package com.icoderoad.utils;


import org.springframework.util.StreamUtils;
import java.io.*;
import java.nio.charset.StandardCharsets;


public class StreamUtilsDemo {
    public static void main(String[] args) throws Exception {
        InputStream is = new ByteArrayInputStream("Spring Utils".getBytes());
        String text = StreamUtils.copyToString(is, StandardCharsets.UTF_8);
        System.out.println("讀取內(nèi)容:" + text);
    }
}

7.ResourceUtils — 資源路徑解析器

包路徑:org.springframework.util.ResourceUtils演示類:/src/main/java/com/icoderoad/utils/ResourceUtilsDemo.java

package com.icoderoad.utils;


import org.springframework.util.ResourceUtils;
import java.io.File;


public class ResourceUtilsDemo {
    public static void main(String[] args) throws Exception {
        File file = ResourceUtils.getFile("classpath:application.yml");
        System.out.println("文件路徑:" + file.getAbsolutePath());
    }
}

提示:生產(chǎn)環(huán)境推薦 ResourceLoader,因 Fat JAR 結(jié)構(gòu)下 ResourceUtils 可能失效。

反射與 AOP

8.ReflectionUtils — 反射操作安全網(wǎng)

包路徑:org.springframework.util.ReflectionUtils演示類:/src/main/java/com/icoderoad/utils/ReflectionUtilsDemo.java

package com.icoderoad.utils;


import org.springframework.util.ReflectionUtils;
import java.lang.reflect.Method;


public class ReflectionUtilsDemo {
    public static void main(String[] args) throws Exception {
        Method method = ReflectionUtils.findMethod(String.class, "toUpperCase");
        Object result = ReflectionUtils.invokeMethod(method, "spring");
        System.out.println("結(jié)果:" + result);
    }
}

9.AopProxyUtils — AOP 代理解密器

包路徑:org.springframework.aop.support.AopProxyUtils演示類:/src/main/java/com/icoderoad/utils/AopProxyUtilsDemo.java

package com.icoderoad.utils;


import org.springframework.aop.support.AopProxyUtils;
import org.springframework.stereotype.Service;


@Service
public class AopProxyUtilsDemo {
    public static void main(String[] args) {
        AopProxyUtilsDemo proxy = new AopProxyUtilsDemo();
        System.out.println("真實(shí)類型:" + AopProxyUtils.ultimateTargetClass(proxy));
    }
}

加密與編碼

10.DigestUtils — 摘要算法助手

包路徑:org.springframework.util.DigestUtils演示類:/src/main/java/com/icoderoad/utils/DigestUtilsDemo.java

package com.icoderoad.utils;


import org.springframework.util.DigestUtils;


public class DigestUtilsDemo {
    public static void main(String[] args) {
        String md5 = DigestUtils.md5DigestAsHex("123456".getBytes());
        System.out.println("MD5 摘要:" + md5);
    }
}

 提示:不要用 MD5 存儲(chǔ)密碼,使用 BCryptPasswordEncoder 才安全。

11.Base64Utils — 編解碼專家

包路徑:org.springframework.util.Base64Utils演示類:/src/main/java/com/icoderoad/utils/Base64UtilsDemo.java

package com.icoderoad.utils;


import org.springframework.util.Base64Utils;


public class Base64UtilsDemo {
    public static void main(String[] args) {
        String encoded = Base64Utils.encodeToString("Spring Boot".getBytes());
        System.out.println("編碼:" + encoded);
        String decoded = new String(Base64Utils.decodeFromString(encoded));
        System.out.println("解碼:" + decoded);
    }
}

性能與路徑

12.StopWatch — 性能計(jì)時(shí)器

包路徑:org.springframework.util.StopWatch演示類:/src/main/java/com/icoderoad/utils/StopWatchDemo.java

package com.icoderoad.utils;


import org.springframework.util.StopWatch;


public class StopWatchDemo {
    public static void main(String[] args) {
        StopWatch watch = new StopWatch("任務(wù)監(jiān)控");
        watch.start("初始化");
        try { Thread.sleep(200); } catch (InterruptedException ignored) {}
        watch.stop();


        watch.start("加載配置");
        try { Thread.sleep(150); } catch (InterruptedException ignored) {}
        watch.stop();


        System.out.println(watch.prettyPrint());
    }
}

13.AntPathMatcher — 路徑匹配引擎

包路徑:org.springframework.util.AntPathMatcher演示類:/src/main/java/com/icoderoad/utils/AntPathMatcherDemo.java

package com.icoderoad.utils;


import org.springframework.util.AntPathMatcher;
import java.util.Map;


public class AntPathMatcherDemo {
    public static void main(String[] args) {
        AntPathMatcher matcher = new AntPathMatcher();
        boolean match = matcher.match("/api/user/**", "/api/user/1001/profile");
        System.out.println("匹配結(jié)果:" + match);


        Map<String, String> vars = matcher.extractUriTemplateVariables("/api/user/{id}", "/api/user/1001");
        System.out.println("提取參數(shù):" + vars.get("id"));
    }
}

Web 工具

14.MimeTypeUtils — MIME 類型解析器

包路徑:org.springframework.util.MimeTypeUtils演示類:/src/main/java/com/icoderoad/utils/MimeTypeUtilsDemo.java

package com.icoderoad.utils;


import org.springframework.util.MimeTypeUtils;


public class MimeTypeUtilsDemo {
    public static void main(String[] args) {
        System.out.println("JSON類型:" + MimeTypeUtils.APPLICATION_JSON_VALUE);
        System.out.println("HTML類型:" + MimeTypeUtils.TEXT_HTML_VALUE);
    }
}

15.UriComponentsBuilder — URL 構(gòu)建專家

包路徑:org.springframework.web.util.UriComponentsBuilder演示類:/src/main/java/com/icoderoad/utils/UriComponentsBuilderDemo.java

package com.icoderoad.utils;


import org.springframework.web.util.UriComponentsBuilder;


public class UriComponentsBuilderDemo {
    public static void main(String[] args) {
        String url = UriComponentsBuilder
                .fromHttpUrl("http://api.example.com/search")
                .queryParam("q", "Spring Boot 教程")
                .queryParam("page", 2)
                .toUriString();
        System.out.println("構(gòu)建URL:" + url);
    }
}

其他實(shí)用工具

16.ClassUtils — 類信息工具

演示類:/src/main/java/com/icoderoad/utils/ClassUtilsDemo.java

package com.icoderoad.utils;


import org.springframework.util.ClassUtils;


public class ClassUtilsDemo {
    public static void main(String[] args) {
        boolean redisExists = ClassUtils.isPresent("redis.clients.jedis.Jedis", ClassLoader.getSystemClassLoader());
        System.out.println("Redis依賴是否存在:" + redisExists);
    }
}

17.SystemPropertyUtils — 系統(tǒng)屬性解析器

演示類:/src/main/java/com/icoderoad/utils/SystemPropertyUtilsDemo.java

package com.icoderoad.utils;


import org.springframework.util.SystemPropertyUtils;


public class SystemPropertyUtilsDemo {
    public static void main(String[] args) {
        String path = SystemPropertyUtils.resolvePlaceholders("${user.home}/logs");
        System.out.println("日志目錄:" + path);
    }
}

18.NumberUtils — 數(shù)字轉(zhuǎn)換安全衛(wèi)士

演示類:/src/main/java/com/icoderoad/utils/NumberUtilsDemo.java

package com.icoderoad.utils;


import org.springframework.util.NumberUtils;


public class NumberUtilsDemo {
    public static void main(String[] args) {
        Integer num = NumberUtils.parseNumber("123", Integer.class);
        System.out.println("轉(zhuǎn)換結(jié)果:" + num);
    }
}

19.ConcurrentReferenceHashMap — 并發(fā)弱引用 Map

演示類:/src/main/java/com/icoderoad/utils/ConcurrentReferenceHashMapDemo.java

package com.icoderoad.utils;


import org.springframework.util.ConcurrentReferenceHashMap;


public class ConcurrentReferenceHashMapDemo {
    public static void main(String[] args) {
        ConcurrentReferenceHashMap<String, String> cache = new ConcurrentReferenceHashMap<>();
        cache.put("key1", "value1");
        System.out.println("緩存內(nèi)容:" + cache.get("key1"));
    }
}

20.LinkedMultiValueMap — 多值 Map 實(shí)現(xiàn)

演示類:/src/main/java/com/icoderoad/utils/LinkedMultiValueMapDemo.java

package com.icoderoad.utils;


import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;


public class LinkedMultiValueMapDemo {
    public static void main(String[] args) {
        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
        params.add("hobby", "籃球");
        params.add("hobby", "足球");
        System.out.println("愛好:" + params.get("hobby"));
    }
}

最佳實(shí)踐與避坑總結(jié)

推薦使用工具類

場(chǎng)景

StringUtils

字符串判空與處理

CollectionUtils

集合判空與合并

Assert

參數(shù)前置校驗(yàn)

StopWatch

性能分析

UriComponentsBuilder

URL 構(gòu)建

慎用工具類

原因

ResourceUtils

Fat JAR 不兼容

DigestUtils

MD5 不安全

ReflectionUtils

性能開銷大

ConcurrentReferenceHashMap

僅適合輕量緩存

結(jié)語:懂工具者,事半功倍

Spring Boot 不只是框架,更是一套完整的開發(fā)體系。 這些工具類的存在,正是為了讓你寫更少的代碼,犯更少的錯(cuò),交付更快的產(chǎn)品

當(dāng)你熟練掌握這些官方工具,就能在任何項(xiàng)目中游刃有余,不再依賴外部庫,也不再重復(fù)造輪子。

 Spring 工具類,是每個(gè)高效 Java 開發(fā)者的秘密武器。

責(zé)任編輯:武曉燕 來源: 路條編程
相關(guān)推薦

2023-08-28 08:59:23

EasyNetQ庫消息傳遞庫

2010-01-07 08:58:18

Windows 7上帝模式

2022-09-09 17:57:03

致態(tài)

2016-05-12 15:15:08

華為閃存

2021-08-16 13:39:40

Windows 10Windows微軟

2016-07-22 14:30:27

Windows10技巧

2011-08-14 22:55:57

激光打印機(jī)行情

2013-03-18 16:09:27

JavaEEOpenfire

2016-10-12 18:47:55

商用電腦聯(lián)想一體機(jī)

2022-09-30 15:37:19

Web網(wǎng)站服務(wù)器

2025-06-04 08:55:00

2018-12-19 13:33:24

Safari瀏覽器搜索

2016-03-11 17:08:31

京東云

2020-02-12 18:45:39

負(fù)載均衡網(wǎng)站處理壓力

2011-10-13 10:18:50

設(shè)計(jì)數(shù)據(jù)庫

2011-06-09 15:16:54

數(shù)據(jù)庫設(shè)計(jì)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)