Guava学习笔记之Preconditions参数检验

在日常开发中,肯定是需要对参数进行校验,以保证业务逻辑能顺利执行下去,比如参数值必须大于0,不能为空等。平时多数研发的开发习惯是if else,但是参数如果较多,代码量多不太好看。

Guava 提供了一系列的静态方法用于校验函数和类的构造器是否符合预期, 并称其为前置条件(preconditions). 如果前置条件校验失败, 就会抛出一个指定的异常.这种方式就比较优雅了

例:之前是if else的方式

@RequestMapping(value = "/workbench/query/user/list", method = RequestMethod.GET)
@ResponseBody
public Result workbenchCustomerStastics(String day,String name,Integer age,Integer sex,Integer type ) {
	if(StringUtils.isBlank(day)){
		return Result.getResultError("查询条件不能为空");
	}
	if(StringUtils.isBlank(name)){
		return Result.getResultError("名称不能为空");
	}
	if(age==null||age<=0){
		return Result.getResultError("年龄校验错误,年龄必须大于0");
	}
	if(sex==null||sex!=1||sex!=0){
		return Result.getResultError("性别校验错误");
	}
	if(type==null){
		return Result.getResultError("类型不能为空");
	}
}

使用Preconditions之后

@RequestMapping(value = "/workbench/query/user/list", method = RequestMethod.GET)
@ResponseBody
public Result workbenchCustomerStastics(String day,String name,Integer age,Integer sex,Integer type ) {
	Preconditions.checkArgument(!StringUtils.isBlank(day),"查询条件不能为空");
	Preconditions.checkArgument(!StringUtils.isBlank(name),"名称不能 为空");
	Preconditions.checkArgument(age!=null&&age>0,"年龄校验错误,年龄必须大于0");
	Preconditions.checkArgument(!(sex==null||sex!=1||sex!=0)),"性别校验错误");
	Preconditions.checkNotNull(type,"类型不能为空");
}

Preconditions提供checkArgument, checkArgument, checkState等校验方式,每个验证方法都有多个重载,异常信息也是可以用占位符的,如:


public static void checkArgument(boolean expression);
public static void checkArgument(boolean expression, @Nullable Object errorMessage);
public static void checkArgument(boolean expression,@Nullable String errorMessageTemplate,@Nullable Object... errorMessageArgs)

用于参数校验只需要Preconditions这个类就可以了,里面还有很多其他的方法,有兴趣的童鞋可以看源码,很简单就能使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章