简述spingboot中的Assert工具类(断言工具类)
作者:cndz
围观群众:634
更新于
标签:spring bootAssert断言spring boot 工具类
问题发现
代码走查看到一位新入职的同事用到了一堆if来判断参数是否合规。比如下面这样。当然并不是说下面这种写法不对。但是过多的使用if会降低代码可读性。其实对于这种情况使用断言写起来更好一点。
@PostMapping("/employInfo")
public ResResult employee(Integer id){
if (null==id) {
return ApiResponse.fail("id不能为空");
}
Employee emp = empService.getById(id);
if(null == emp){
return ApiResponse.fail("员工信息不存在");
}
//查询员工信息逻辑
return ApiResponse.success("查询成功",emp);
}
概念
断言:断言(assertion)是一种在程序中的一阶逻辑(如:一个结果为真或假的逻辑判断式),目的为了表示与验证软件开发者预期的结果——当程序执行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止执行,并给出错误信息。
spring boot 项目中的断言工具类
Spring Boot 提供了一个名为 Assert 的工具类,用于执行断言操作。这个工具类提供了一组静态方法,可以对输入数据进行验证,并在验证失败时抛出异常。Assert 工具类的常用方法包括:
- notNull():判断对象是不为null,如果为null抛出IllegalArgumentException异常。
- isNull();判断对象是null,如果不是null则抛出IllegalArgumentException异常。
- hasLength();判断字符串不为null或者不为空串(字符串长度大于0)。否则抛出IllegalArgumentException异常。
- hasText():判断字符串是否为非空字符串(去除首位空格后长度大于0)。否则抛出IllegalArgumentException异常。
- isTrue():判断表达式是否为 true。如果不是则抛出IllegalArgumentException异常
- state():判断表达式是否为 true。如果不是则抛出IllegalStateException异常(类似于isTrue只是抛出的异常不同)
- notEmpty();判断数组或集合是否为空,如果是空则抛出IllegalArgumentException异常。
使用这些方法可以方便地进行参数校验和业务逻辑校验,避免代码中大量的 if-else 判断。同时,Spring Boot 还提供了一个 assertThat() 方法,可以基于 Hamcrest 匹配器库进行更加灵活的验证操作。
回到最初的问题。如果使用断言来处理可以写成下面这样(下方省略异常捕获)。
@PostMapping("/employInfo")
public ResResult employee(Integer id){
Assert.notNull(id,"员工id不能为空");
Employee emp = empService.getById(id);
Assert.notNull(emp,"");
return ApiResponse.success("员工信息不存在",emp);
}