Spring Boot 不只是框架,更是一套完整的开发体系。 这些工具类的存在,正是为了让你写更少的代码,犯更少的错,交付更快的产品。
在多数项目中,开发者为了方便常常引入各种工具包,比如 Apache Commons、Guava、Hutool…… 但其实,Spring 框架自身早已内置了大量经过高强度生产验证的核心工具类。这些类不仅功能完备,还能完美融入 Spring Boot 的上下文体系,帮助你写出更优雅、更健壮、更高性能的代码。
本文将带你一次性掌握 Spring 官方精选的 20 大工具类, 每个工具类都配有:
- 演示类路径
- 核心功能点与适用场景
- 完整可运行示例代码
- 最佳实践与常见陷阱提示
一键启动示例项目
# 克隆项目
git clone <repository-url>
cd spring-utils
# 启动交互式菜单模式(推荐)
mvn spring-boot:run
# 或直接运行全部示例
mvn spring-boot:run -Dspring-boot.run.arguments="all"
核心工具类
1.StringUtils — 字符串处理终结者
包路径:org.springframework.util.StringUtils演示类:/src/main/java/com/icoderoad/utils/StringUtilsDemo.java
功能亮点: 字符串判空、去空格、文件路径处理、字符串拼接。
package com.icoderoad.utils;
import org.springframework.util.StringUtils;
public class StringUtilsDemo {
public static void main(String[] args) {
String nickname = " ICodeRoad ";
// 判断是否有内容(自动 trim)
if (StringUtils.hasText(nickname)) {
System.out.println("昵称有效:" + nickname.trim());
}
// 提取文件名
String filename = StringUtils.getFilename("/home/user/docs/readme.txt");
System.out.println("文件名:" + filename);
// 将数组转为逗号分隔字符串
String[] arr = {"Java", "Spring", "Boot"};
String joined = StringUtils.arrayToCommaDelimitedString(arr);
System.out.println("拼接结果:" + 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("无标签,跳过处理");
return;
}
tags.forEach(tag -> System.out.println("处理标签:" + 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 — 对象安全守护者
包路径: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("数组打印:" + ObjectUtils.nullSafeToString(arr));
System.out.println("安全比较:" + ObjectUtils.nullSafeEquals("abc", "abc"));
}
}
4.Assert — 参数验证大师
包路径: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("读取内容:" + 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());
}
}
提示:生产环境推荐
ResourceLoader,因 Fat JAR 结构下ResourceUtils可能失效。
反射与 AOP
8.ReflectionUtils — 反射操作安全网
包路径: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("结果:" + 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("真实类型:" + 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 存储密码,使用
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 — 性能计时器
包路径: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("任务监控");
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("匹配结果:" + match);
Map<String, String> vars = matcher.extractUriTemplateVariables("/api/user/{id}", "/api/user/1001");
System.out.println("提取参数:" + 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 构建专家
包路径: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("构建URL:" + url);
}
}
其他实用工具
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 — 系统属性解析器
演示类:/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 — 数字转换安全卫士
演示类:/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("转换结果:" + num);
}
}
19.ConcurrentReferenceHashMap — 并发弱引用 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("缓存内容:" + cache.get("key1"));
}
}
20.LinkedMultiValueMap — 多值 Map 实现
演示类:/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"));
}
}
最佳实践与避坑总结
|
推荐使用工具类 |
场景 |
|
|
字符串判空与处理 |
|
|
集合判空与合并 |
|
|
参数前置校验 |
|
|
性能分析 |
|
|
URL 构建 |
|
慎用工具类 |
原因 |
|
|
Fat JAR 不兼容 |
|
|
MD5 不安全 |
|
|
性能开销大 |
|
|
仅适合轻量缓存 |
结语:懂工具者,事半功倍
Spring Boot 不只是框架,更是一套完整的开发体系。 这些工具类的存在,正是为了让你写更少的代码,犯更少的错,交付更快的产品。
当你熟练掌握这些官方工具,就能在任何项目中游刃有余,不再依赖外部库,也不再重复造轮子。
Spring 工具类,是每个高效 Java 开发者的秘密武器。
AI大模型学习福利
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
四、AI大模型商业化落地方案

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量
2005

被折叠的 条评论
为什么被折叠?



