前言
assert:断言是java的一个保留字,用来对程序进行调试,后接逻辑运算表达式,如下:
int a = 0, b = 1; assert a == 0 && b == 0; 使用方法:javac编译源文件,再java -ea class文件名即可。 在springboot中可以使用spring提供的Assert类的方法对前端来的参数进行校验
Assert断言基本上替换传统的if判断,减少业务参数校验的代码行数,提高程序可读性。
@Validated、@Valid对比及详细用法
前面介绍了Validator框架,还需要Assert吗? Validator只解决了参数自身的数据校验,解决不了参数和业务数据之间校验
举例:
/**
* Validator只解决了参数自身的数据校验,解决不了参数和业务数据之间校验
*
* @param
* @return
*/
@PostMapping("/testWithAssert")
public void testWithAssert(@RequestParam("artisanId") String artisanId) {
Artisan artisan = artisanDao.selectArtisanReturnNull(artisanId);
Assert.notNull(artisan, "用户不存在(Assert抛出)");
}
Assert代码更优雅,更简洁,同样也能实现效果。
Assert都有哪些方法
对象和类型断言
函数 | 说明 |
---|
notNull() | 假设对象不null | isNull() | 检查对象为null | isInstanceOf() | 检查对象必须为另一个特定类型的实例 | isAssignable() | 检查类型 |
文本断言
函数 | 说明 |
---|
hasLength() | 检查字符串不是空符串,意味着至少包含一个空白,可以使用hasLength()方法 | hasText() | 增强检查条件,字符串至少包含一个非空白字符,可以使用hasText()方法 | doesNotContain() | 检查参数不包含特定子串 |
逻辑断言
函数 | 说明 |
---|
isTrue() | 条件为假抛出IllegalArgumentException 异常 | state() | 该方法与isTrue一样,但抛出IllegalStateException异常 |
Collection和map断言
函数 | 说明 |
---|
Collection应用notEmpty() | Collection不是null并包含至少一个元素 | map应用notEmpty() | 检查map不null,并至少包含一个entry(key,value键值对) |
数组断言
函数 | 说明 |
---|
notEmpty() | 可以检查数组不null,且至少包括一个元素 | noNullElements() | 确保数组不包含null元素 |
|