1. 背景
在项目中,大家一般都假设所有的参数不可靠,都需要对其做校验。例如:
public static ResultInfo<String> validInputParam(String userName, BigDecimal b){
if (StringUtils.isEmpty(userName)){
return ResultInfo.failure(ResultCode.ERROR.status(),"用户名不可为空");
}
if (b == null){
return ResultInfo.failure(ResultCode.ERROR.status(),"b不可为空");
}
if (b.compareTo(BigDecimal.ZERO) != 1){
return ResultInfo.failure(ResultCode.ERROR.status(),"b的取值范围不正确");
}
System.out.println("验证通过");
// ...
return ResultInfo.success();
}
这种方式从功能上来说,没一点问题。但是,从长期维护性上来说,代码复用率低,重复度高,校验规则越来越多,很难维护。
针对以上场景,下面探讨下如何优雅地在系统中做参数校验,分享一下hibernate validator校验框架的使用。
2. 引入依赖
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.7.Final</version>
</dependency>
3. 参数校验
参数校验分为简单校验、嵌套校验、分组校验。
3.1 简单校验
简单的校验即是没有嵌套属性,直接在需要的元素上标注约束注解即可。注解可见于:-api:2.0.2 jar包中package ,和 :hiber