Spring Boot 内置工具类,功能齐全!!

【SpringBoot系列】 Spring Boot 中事半功倍的一些工具类 Spring Boot 中事半功倍的一些工具类 阅读详情

01断言

  • 断言是一个逻辑判断,用于检查不应该发生的情况

  • Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启

  • SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查

// 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行
// 参数 message 参数用于定制异常信息。
void notNull(Object object, String message)

// 要求参数必须空(Null),否则抛出异常,不予『放行』。
// 和 notNull() 方法断言规则相反
void isNull(Object object, String message)

// 要求参数必须为真(True),否则抛出异常,不予『放行』。
void isTrue(boolean expression, String message)

// 要求参数(List/Set)必须非空(Not Empty),否则抛出异常,不予放行
void notEmpty(Collection collection, String message)

// 要求参数(String)必须有长度(即,Not Empty),否则抛出异常,不予放行
void hasLength(String text, String message)

// 要求参数(String)必须有内容(即,Not Blank),否则抛出异常,不予放行
void hasText(String text, String message)

// 要求参数是指定类型的实例,否则抛出异常,不予放行
void isInstanceOf(Class type, Object obj, String message)

// 要求参数 `subType` 必须是参数 superType 的子类或实现类,否则抛出异常,不予放行
void isAssignable(Class superType, Class subType, String message)

02对象、数组、集合

  • ObjectUtils

获取对象的基本信息

// 获取对象的类名。参数为 null 时,返回字符串:"null"
String nullSafeClassName(Object obj)

// 参数为 null 时,返回 0
int nullSafeHashCode(Object object)

// 参数为 null 时,返回字符串:"null"
String nullSafeToString(boolean[] array)

// 获取对象 HashCode(十六进制形式字符串)。参数为 null 时,返回 0
String getIdentityHexString(Object obj)

// 获取对象的类名和 HashCode。参数为 null 时,返回字符串:""
String identityToString(Object obj)

// 相当于 toString()方法,但参数为 null 时,返回字符串:""
String getDisplayString(Object obj)

判断工具

// 判断数组是否为空
boolean isEmpty(Object[] array)

// 判断参数对象是否是数组
boolean isArray(Object obj)

// 判断数组中是否包含指定元素
boolean containsElement(Object[] array, Object element)

// 相等,或同为 null时,返回 true
boolean nullSafeEquals(Object o1, Object o2)

/*

判断参数对象是否为空,判断标准为:

    Optional: Optional.empty()

       Array: length == 0

CharSequence: length == 0

  Collection: Collection.isEmpty()

         Map: Map.isEmpty()

 */
boolean isEmpty(Object obj)

其他工具方法

// 向参数数组的末尾追加新元素,并返回一个新数组
<A, O extends A> A[] addObjectToArray(A[] array, O obj)

// 原生基础类型数组 --> 包装类数组
Object[] toObjectArray(Object source)
  • StringUtils

字符串判断工具

// 判断字符串是否为 null,或 ""。注意,包含空白符的字符串为非空
boolean isEmpty(Object str)

// 判断字符串是否是以指定内容结束。忽略大小写
boolean endsWithIgnoreCase(String str, String suffix)

// 判断字符串是否已指定内容开头。忽略大小写
boolean startsWithIgnoreCase(String str, String prefix)

// 是否包含空白符
boolean containsWhitespace(String str)

// 判断字符串非空且长度不为 0,即,Not Empty
boolean hasLength(CharSequence str)

// 判断字符串是否包含实际内容,即非仅包含空白符,也就是 Not Blank
boolean hasText(CharSequence str)

// 判断字符串指定索引处是否包含一个子串。
boolean substringMatch(CharSequence str, int index, CharSequence substring)

// 计算一个字符串中指定子串的出现次数
int countOccurrencesOf(String str, String sub)

字符串操作工具

路径相关工具方法

// 解析路径字符串,优化其中的 “..”
String cleanPath(String path)

// 解析路径字符串,解析出文件名部分
String getFilename(String path)

// 解析路径字符串,解析出文件后缀名
String getFilenameExtension(String path)

// 比较两个两个字符串,判断是否是同一个路径。会自动处理路径中的 “..”
boolean pathEquals(String path1, String path2)

// 删除文件路径名中的后缀部分
String stripFilenameExtension(String path)

// 以 “. 作为分隔符,获取其最后一部分
String unqualify(String qualifiedName)

// 以指定字符作为分隔符,获取其最后一部分
String unqualify(String qualifiedName, char separator)
  • CollectionUtils

集合判断工具

// 判断 List/Set 是否为空
boolean isEmpty(Collection<?> collection)

// 判断 Map 是否为空
boolean isEmpty(Map<?,?> map)

// 判断 List/Set 中是否包含某个对象
boolean containsInstance(Collection<?> collection, Object element)

// 以迭代器的方式,判断 List/Set 中是否包含某个对象
boolean contains(Iterator<?> iterator, Object element)

// 判断 List/Set 是否包含某些对象中的任意一个
boolean containsAny(Collection<?> source, Collection<?> candidates)

// 判断 List/Set 中的每个元素是否唯一。即 List/Set 中不存在重复元素
boolean hasUniqueObject(Collection<?> collection)

集合操作工具

// 将 Array 中的元素都添加到 List/Set 中
<E> void mergeArrayIntoCollection(Object array, Collection<E> collection)

// 将 Properties 中的键值对都添加到 Map 中
<K,V> void mergePropertiesIntoMap(Properties props, Map<K,V> map)

// 返回 List 中最后一个元素
<T> T lastElement(List<T> list)

// 返回 Set 中最后一个元素
<T> T lastElement(Set<T> set)

// 返回参数 candidates 中第一个存在于参数 source 中的元素
<E> E findFirstMatch(Collection<?> source, Collection<E> candidates)

// 返回 List/Set 中指定类型的元素。
<T> T findValueOfType(Collection<?> collection, Class<T> type)

// 返回 List/Set 中指定类型的元素。如果第一种类型未找到,则查找第二种类型,以此类推
Object findValueOfType(Collection<?> collection, Class<?>[] types)

// 返回 List/Set 中元素的类型
Class<?> findCommonElementType(Collection<?> collection)

03文件、资源、IO 流

  • FileCopyUtils

输入

// 从文件中读入到字节数组中
byte[] copyToByteArray(File in)

// 从输入流中读入到字节数组中
byte[] copyToByteArray(InputStream in)

// 从输入流中读入到字符串中
String copyToString(Reader in)

输出

// 从字节数组到文件
void copy(byte[] in, File out)

// 从文件到文件
int copy(File in, File out)

// 从字节数组到输出流
void copy(byte[] in, OutputStream out)

// 从输入流到输出流
int copy(InputStream in, OutputStream out)

// 从输入流到输出流
int copy(Reader in, Writer out)

// 从字符串到输出流
void copy(String in, Writer out)
  • ResourceUtils

从资源路径获取文件

// 判断字符串是否是一个合法的 URL 字符串。
static boolean isUrl(String resourceLocation)

// 获取 URL
static URL getURL(String resourceLocation)

// 获取文件(在 JAR 包内无法正常使用,需要是一个独立的文件)
static File getFile(String resourceLocation)

Resource

// 文件系统资源 D:\...
FileSystemResource

// URL 资源,如 file://... http://...
UrlResource

// 类路径下的资源,classpth:...
ClassPathResource

// Web 容器上下文中的资源(jar 包、war 包)
ServletContextResource

// 判断资源是否存在
boolean exists()

// 从资源中获得 File 对象
File getFile()

// 从资源中获得 URI 对象
URI getURI()

// 从资源中获得 URI 对象
URL getURL()

// 获得资源的 InputStream
InputStream getInputStream()

// 获得资源的描述信息
String getDescription()
  • StreamUtils

输入

void copy(byte[] in, OutputStream out)
int copy(InputStream in, OutputStream out)
void copy(String in, Charset charset, OutputStream out)
long copyRange(InputStream in, OutputStream out, long start, long end)

输出

byte[] copyToByteArray(InputStream in)
String copyToString(InputStream in, Charset charset)
// 舍弃输入流中的内容
int drain(InputStream in)

04反射、AOP

  • ReflectionUtils

获取方法

// 在类中查找指定方法
Method findMethod(Class<?> clazz, String name)

// 同上,额外提供方法参数类型作查找条件
Method findMethod(Class<?> clazz, String name, Class<?>... paramTypes)

// 获得类中所有方法,包括继承而来的
Method[] getAllDeclaredMethods(Class<?> leafClass)

// 在类中查找指定构造方法
Constructor<T> accessibleConstructor(Class<T> clazz, Class<?>... parameterTypes)

// 是否是 equals() 方法
boolean isEqualsMethod(Method method)

// 是否是 hashCode() 方法
boolean isHashCodeMethod(Method method)

// 是否是 toString() 方法
boolean isToStringMethod(Method method)

// 是否是从 Object 类继承而来的方法
boolean isObjectMethod(Method method)

// 检查一个方法是否声明抛出指定异常
boolean declaresException(Method method, Class<?> exceptionType)

执行方法

// 执行方法
Object invokeMethod(Method method, Object target)

// 同上,提供方法参数
Object invokeMethod(Method method, Object target, Object... args)

// 取消 Java 权限检查。以便后续执行该私有方法
void makeAccessible(Method method)

// 取消 Java 权限检查。以便后续执行私有构造方法
void makeAccessible(Constructor<?> ctor)

获取字段

// 在类中查找指定属性
Field findField(Class<?> clazz, String name)

// 同上,多提供了属性的类型
Field findField(Class<?> clazz, String name, Class<?> type)

// 是否为一个 "public static final" 属性
boolean isPublicStaticFinal(Field field)

设置字段

// 获取 target 对象的 field 属性值
Object getField(Field field, Object target)

// 设置 target 对象的 field 属性值,值为 value
void setField(Field field, Object target, Object value)

// 同类对象属性对等赋值
void shallowCopyFieldState(Object src, Object dest)

// 取消 Java 的权限控制检查。以便后续读写该私有属性
void makeAccessible(Field field)

// 对类的每个属性执行 callback
void doWithFields(Class<?> clazz, ReflectionUtils.FieldCallback fc)

// 同上,多了个属性过滤功能。
void doWithFields(Class<?> clazz, ReflectionUtils.FieldCallback fc,
                  ReflectionUtils.FieldFilter ff)

// 同上,但不包括继承而来的属性
void doWithLocalFields(Class<?> clazz, ReflectionUtils.FieldCallback fc)
  • AopUtils

判断代理类型

// 判断是不是 Spring 代理对象
boolean isAopProxy()

// 判断是不是 jdk 动态代理对象
isJdkDynamicProxy()

// 判断是不是 CGLIB 代理对象
boolean isCglibProxy()

获取被代理对象的 class

// 获取被代理的目标 class
Class<?> getTargetClass()
  • AopContext

获取当前对象的代理对象

Object currentProxy()
YOLO11涨点优化:训练技巧 | 使用标签平滑(Label Smoothing)配合余弦退火学习率,防止过拟合,稳步提点 摘要: YOLO11凭借动态卷积核调度、自适应特征融合等创新成为2026年目标检测主流,但面临训练集过拟合问题。文章聚焦两种零推理开销的正则化技巧:标签平滑(Label Smoothing)和余弦退火学习率(Cosine Annealing LR)。标签平滑通过软化硬标签(如将[1,0]改为[0.9,0.1])防止模型过度自信,代码中通过label_smoothing=0.1一键启用;余弦退火则以平滑的余弦曲线调整学习率(cos_lr=True),避免阶梯衰减的震荡。两者组合可显著缩小YOLO11训练与验证 阅读详情

相关推荐

保姆级教程:在树莓派5B上用AI Kit跑YOLOv8,实测134fps的完整配置流程

本文提供了一份详细的树莓派5B搭配AI Kit部署YOLOv8的教程,从硬件组装到模型转换、优化和部署,最终实现134FPS的高帧率推理性能。通过Hailo-8L AI加速模块和HEF模型转换,这套方案为边缘AI计算提供了强大支持,适用于智能监控、无人机视觉导航等应用场景。

weixin_28725407的博客 448

【宝藏系列】几款好用的 Spring Boot 内置工具类

👉本期为大家带来的是北京大学出版社的《深入浅出Java虚拟机:JVM原理与实战》本书主要以 Java 虚拟机的基本特性及运行原理为中心,深入浅出地分析 JVM 的组成结构和底层实现,介绍了很多性能调优的方案和工具的使用方法。最后还扩展介绍了 JMM 内存模型的实现原理和 Java 编译器的优化机制,让读者不仅可以学习 JVM 的核心技术知识,还能夯实 JVM 调优及代码优化的技术功底。

ws15168689087的博客 8658

GD32H7 SPI驱动实战:手把手教你用SPI3连接外部Flash(W25Q128)并实现读写

本文详细介绍了基于GD32H7系列MCU的SPI3接口驱动W25Q128外部Flash的全流程开发指南。从硬件设计、引脚配置到SPI3外设深度配置,再到底层通信函数实现和高级功能优化,提供了完整的解决方案。特别针对高速读取、DMA传输和信号完整性等关键环节进行了优化,确保系统在-40℃~85℃范围内稳定工作。

weixin_28729205的博客 380

Spring Boot 内置工具类汇总与讲解

Spring Boot 提供了许多内置工具类,这些类大多继承自 Spring Framework,旨在简化常见开发任务(如配置处理、资源加载、Bean 操作等)。

程序员诚哥 1216

虚拟机VirtualBox下载与安装、安装Ubuntu超详细图文步骤,对一些配置问题也有所写。

自己使用过两款虚拟机,相较于VMware虚拟机来说,virtuabox虚拟机所占内存更小,只有几十兆,且完全开源不收费,里面的功能与VMware基本差不多(在日常开发、学习使用完全够用)。最主要的是,在博主自己使用VMware时经常出错,而virtualbox就更稳定一些,所以这篇是针对virtualbox的安装与一些细节部分。

l1015649309的博客 4万+

逆向分析踩坑记:当Frida在x86模拟器上‘看不见’ARM的so文件时,我们该如何手动定位与验证?

本文探讨了在x86模拟器上使用Frida进行逆向分析时,无法检测到ARM架构so文件的解决方案。通过分析内存映射、Frida的视觉盲区及手动定位技术,提供了兼容层、混合调试和原生ARM环境三种实用方案,帮助逆向工程师突破工具限制,实现精准定位与验证。

weixin_27697385的博客 221

Spring Boot 内置工具类介绍

最近发现同事写了不少重复的工具类,发现其中很多功能,Spring 自带的都有。于是整理了本文,希望能够帮助到大家!

吴名氏的博客 14万+

密码学系列3-Elgamal加密及其IND-CPA安全性证明

但这没有任何影响,敌手本身就只能知道公钥,他并没有能力知道挑战者是否知道对应的私钥。所以上述整个游戏就是一个模拟实验,敌手无法区分挑战者运行的是这个模拟实验,还是真正的按照第一节的算法构造的实验(挑战者知道私钥…为什么合起来的时候有1/2:因为T既可能是随机的也可能是g^{ab},这两种情况概率为1/2。能够攻破Elgamal加密方案,那么挑战者利用敌手的能力构建下面游戏,来求解困难性问题DDH。就是挑战者选的随机数,虽然挑战者自己也不知道。),否则挑战者输出0,作为DDH的回答。

qq_41359358的博客 1249

深入源码:Spring Boot 内置 Tomcat 的实现机制分析

Spring Boot,Tomcat的组成,Connector,Container,AbstractApplicationContext,onRefresh(),AnnotationConfigServletWebServerApplicationContext,ServletWebServerApplicationContext,createWebServer,getWebServerFactory,getWebServer,WebServerStartStopLifecycle

qq_26733517的博客 1551

目标检测YOLO实战应用案例100讲-【目标检测】缺陷检测(二)

在工业生产中总是经常遇到裂痕、划痕等产品的表面缺陷问题,机器视觉行业对于表面检测相比前几年已经有很大的突破,对于产品表面的划伤、污迹等检测已经不再是难点。在金属、玻璃、手机屏幕、液晶板等行业表面检测上应用广泛。但由于该类缺陷形状不规则、深浅对比度低,而且往往会被产品表面的自然纹理或图案所干扰。因此,表面划痕缺陷检测对于正确打光、相机分辨率、被检测部件与工业相机的相对位置、复杂的机器视觉算法等要求非常高。

qq_36130719的博客 728

MediaPipe 教程:从安装到应用-全网最全

MediaPipe是Google推出的开源框架,专为构建机器学习管道设计,可以高效处理视频、音频等时间序列数据。本文教程从安装到应用逐步讲解: 安装步骤简单,只需通过pip安装mediapipe包并验证版本; 重点演示人体姿态检测功能,可识别33个身体关键点; 提供基础代码实现,包括视频捕获、关键点检测与可视化; 强调模块化开发,将功能封装成类以提高代码复用性。 教程适合初学者,通过清晰指引和实用代码示例,帮助快速实现计算机视觉应用。

FJN110的博客 1563

Spring Boot 内置工具类

断言断言是一个逻辑判断,用于检查不应该发生的情况Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查登录后复制 // 要求参数 object 必须为非空(Not Null),否则抛出异常,不...

qq_35485206的博客 589

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-单端信号-并联端接

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的单端拓扑并且进行并联端接,以下图为例,准备好发送接收端的IBIS模型, (se_example.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(W1_welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 374

别再自己瞎写工具类了,Spring Boot 内置工具类应有尽有, 建议收藏!!

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天14:00更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业调度中间件 Elast...

weixin_44421461的博客 147

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

工具类,Spring Boot 内置丰富的工具类

断言 断言是一个逻辑判断,用于检查不应该发生的情况 Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启 SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查 //要求参数object必须为非空(NotNull),否则抛出异常,不予放行 //参数 message 参数用于定制异常信息。 voidnotNull(Objectobject,Stringmessage) //要求参数...

记事本 466

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

拒绝重复造轮子!Spring Boot 内置的高效官方工具类

本文介绍了Spring框架中最实用的工具类,涵盖字符串处理、集合操作、对象校验、性能监控等核心功能。StringUtils、CollectionUtils、ObjectUtils等基础工具类提供了空值检查、集合操作等常用方法;StopWatch可用于性能监控,ReflectionUtils简化反射操作;ResourceUtils、FileCopyUtils等工具类处理文件与资源操作。文章还包含模式匹配工具、编码工具及实战应用示例,并给出使用建议和注意事项。这些经过生产验证的工具类能显著提升开发效率,建议优先

weixin_49538406的博客 934

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Spring Boot 内置工具类应有尽有, 建议收藏!!

Spring Boot 内置工具类应有尽有, 建议收藏!!

zhaoshuangjian 1147

Spring+Spring Boot各种实用的工具类

文章目录1 ClassUtils2 BeanUtils3 SpringFactoriesLoader4 ObjectUtils5 ReflectionUtils6 ResourceUtils7 SerializationUtils8 StringUtils9 SystemPropertyUtils 1 ClassUtils 该类是针对于Class类的常见操作工具类。 可以查看:ClassUtilsTests进行学习 2 BeanUtils Static convenience methods for Ja

zcswl7961的博客 1893

Spring Boot 内置工具类学习笔记

Spring Boot 内置工具类应有尽有

一线工作者的所见、所闻...... 9444

推荐好用 Spring Boot 内置工具类

往期热门文章:1、面试被问SpringBoot自动装配原理,怎么破?2、五个刁钻的String面试问题及解答3、IntelliJ平台将完全停止使用Log4j4、神操作!我把 3000 行代码重构成 15 行!5、我用Java几分钟处理完30亿个数据...最近发现同事写了不少重复的工具类,发现其中很多功能,Spring 自带的都有。于是整理了本文,希望能够帮助到大家!断言1...

Java之间 222

Spring Boot整合Elasticsearch及工具类封装

通过// 连接超时时间(毫秒)// 请求超时时间// Getter和Setter省略通过封装的Spring Boot Starter,开发者可以快速集成ES功能,同时通过工具类屏蔽底层API的复杂性。本文提供的方案支持灵活配置、多数据源管理和生产级优化,适用于中大型项目。异步操作支持:封装RestClient的异步API。索引生命周期管理:自动创建/更新索引。监控集成:对接Prometheus监控ES性能指标。

qq_39515858的博客 1069
上一篇: 把win11改win10?简单
下一篇: 推荐!神器 Jupyter!!
架构文摘JGWZ
博客等级 码龄5年 8808粉丝 345原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值