SpringBoot常见工具类

断言

  1. 断言是一个逻辑判断,用于检查不应该发生的情况;
  2. Assert关键字在jdk1.4中引入,可以通过jvm参数-enableassertions开启;
  3. Springboot中提供了Assert断言工具类,通常用于数据合法性检查

① 判断非空,参数minStamp必须为非空,否则抛出异常,不予放行

// 最小时间戳不允许为空
Assert.notNull(minStamp, "minStamp不允许为空");

②判断为空,参数mapperByName必须为空,否则抛出异常,不予放行

 // 若查找出有符合条件的mapper则抛出异常,并提示异常信息“。。。”
Assert.isNull(mapper, environment + "环境已存在相同的名称,任务失败!");

③要求参数必须为真true,否则抛出异常,不予放行

Assert.isTrue(StringUtils.isNotBlank(name),"员工姓名不能为空");

④要求list、set必须为有长度,即非空Not empty,否则抛出异常,不予放行

// 用法1:对传入的JsonArray进行判断,如果empty,不放行
Assert.notEmpty(jsonArray, "jsonArray is null");
// 用法2: 对传入的list集合进行判断,如果empty,不放行
public Result deleteByIds(List<Long> ids){
	Assert.notEmpty(ids, "ids can not be null or empty");
	// 执行删除操作
}

⑤要求参数String必须有内容,即Not blank,否则抛出异常不予放行

Assert.hasText(name, "当前人姓名不可为空");
Assert.hasText(ossPath, "文件路径不可为空");

⑥要求输入的参数必须是某种数据类型,否则抛出异常,不予放行

public  void  doSomething(Object object1, Object object2){
	Assert.isInstanceOf(List.class, object1, "输入参数类型错误!必须为List格式参数");
	Assert.isInstanceOf(String.class, object2, "输入参数类型错误!必须为String格式参数");
}

⑦要求参数’subType’必须是superType的子类或者实现类,否则抛出异常,不予通行

void isAssignable(Class superType, Class subType, String message);

对象、数组、集合

ObjectUtils

1.获取对象的基本信息

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

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

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

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

2.判断工具
  • 判断数据是否为空
	// 如果beanMap为空,是一个空map集合,直接返回
	if (MapUtils.isEmpty(beanMap)) {
            return;
        }
   // 如果list为空,是一个空list
   if (CollectionUtils.isEmpty(list)) {
            return Collections.emptyList();
        } 
  // 获取所有字段,并对获取到的fields的数组进行非空判断
        Field[] fields = FieldUtils.getAllFields(clazz);
        if (ArrayUtils.isEmpty(fields)) {
            return Collections.emptyList();
        }          
  • 判断参数对象是否为数组
 // 获取数组值
        if (clazz.isArray()) {
            return Array.newInstance(clazz.getComponentType(), 0);
        }
  • 判断数组中是否包含指定元素
if(applyingList.contains(String str)) {
    // 如果申请列表当中有这个str元素,对应的状态设为0;
    permissionDTO.setStatus(0);
 }

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

OptionalOptional.empty()
Array: length == 0
CharSequence: length == 0
Collection: Collection.isEmpty()
Map: map.isEmpty()
  • 其他工具方法
// 向参数数组的末尾追加新元素,并返回一个新数组
<A, O extends A> A[] addObjectToArray(A[] array, O obj)
// 原生基础类数组-->包装类数组
Object[] toObjectArray(Object source)
StringUtils
  1. 字符串判断工具
    ①判断字符串是否为null,或者“”,注意,包含空白符的字符串为非空
if (StringUtils.isEmpty(workNo)) {
    return workNo; // 如果工号为空,返回输入的工号
  }

②字符串是否以xxx开头或结尾忽略大小写

boolean endWithIgnoreCase(String str,String suffix);
boolean StartWithIgnoreCase(String str,String prefix);

③是否包含空白符

boolean containsWhiteSpace(String str)

④判断字符串非空且长度不为0,即 not empty

boolean hasLength(charSequence str)

⑤判断字符串是否包含实际内容,即非仅包含空白符

boolean hasText(CharSequence str)

⑥判断字符串指定索引处是否包含一个子串

Boolean subStringMatch(charSequence str,int index, charSequence substring)

⑦ 计算一个字符串中指定子串出现的次数

int countOccurencesOf(String str, String sub)
  1. 字符串操作工具

①查找并替换指定子串

 private static final ThreadLocal<String> THREAD_TRACE_ID = ThreadLocal.withInitial(
 		// 获取一个uuid并把里面的"-" 替换成""
        () -> UUID.randomUUID().toString().replace("-", ""));

②去除尾部的特定字符

String trimTrailingCharacter(String str, char trailingCharacter)

③去除头部的特定字符

String trimLeadingCharacter(String str,char leadingCharacter)

④去除头部的空白符

String trimLeadingWhitespace(String str);

⑤去除尾部的空白符

String trimTrailingWhiteSpace(String str);

⑥去除头部和尾部的空白符

String trimWhitespace(String str);

**例子CsvReader.java中**
public void setTrimWhitespace(boolean trimWhitespace) {
	userSettings.trimWhitespace = trimWhitespace;
}

⑦删除开头、结尾、中间的空白符

String trimAllWhiteSpace(String str);

⑧删除指定子串

String delete(String inString, String pattern)

⑨删除指定字符(可以是多个)

String deleteAny(String inString, String charToDelete)

⑩对数组的每一项执行trim()方法

String[] trimArrayElements(String[] array)

将URL字符串进行解码

String uriDecode(String source, Charset charset)
  1. 路径相关工具方法
    ①解析路径字符串,优化其中的"…"
    String cleanPath(String path)
    ②解析路径字符串,解析出文件名部分
    String getFileName(String path)
    ③解析路径字符串,解析出文件名后缀名
    String getFileNameExtension(String path)
    ④比较两个字符串,判断是否为同一个路径,会自动处理路径中的”…"
    boolean pathEquals(String path1, String path2)
    ⑤删除文件路径名中的后缀部分
    String stripFileNameEtension(String path)
    ⑥以"."作为分隔符,获取其最后一部分
    String unqualify(String qualifiedName)
    ⑦以指定字符串作为分割符,获取其最后一部分
    String unqualify(String qualifiedName, char separator)

你可能感兴趣的:(2022,spring,boot,java,后端)