为了账号安全,请及时绑定邮箱和手机立即绑定

为什么要引入hibernate-validator

在代码中没有看到使用hibernate-validator里面的内容呀

正在回答

1 回答

课程例讲解的很清楚了,在没有引入hibernate-validator之前,我们使用判空的方式来验证UserModel。

        //如果需要的信息为空,则抛出异常
        if (StringUtils.isEmpty(userModel.getName())
               || userModel.getAge() == null
               || userModel.getGender() == null
               || StringUtils.isEmpty(userModel.getTelephone())
               || StringUtils.isEmpty(userModel.getEncrptPassword())) {
            throw new BusinessException(EnumBussinessError.PARAMETER_VALIDATION_ERROR);
        }

hibernate-validator是一个验证框架,可以大大简化验证的过程,增加了验证的细节

首先我们对UserModel进行了改造

@NotBlank(message = "用户名不能为空")
private String name;

@NotNull(message = "性别不能为空")
private Byte gender;

@NotNull(message = "年龄不能为空")
@Min(value = 0, message = "年龄不能小于0")
@Max(value = 150, message = "年龄不能大于150")
private Integer age;

@NotBlank(message = "手机号不能为空")
private String telephone;

private String registreMode;

private String thirdPartyId;

@NotBlank(message = "密码不能为空")
private String encrptPassword;

其次我们建立其了两个类,一个是ValidatorUtil,用来验证添加验证规则的UserModel;另一个类ValidatorResult,用来保存验证后的信息。

验证代码就简化为:

ValidatorResult validatorResult = validatorUtil.validate(userModel);
if (validatorResult.getHasError()) {
    throw new BusinessException(EnumBussinessError.PARAMETER_VALIDATION_ERROR,validatorResult.getErrorMsg());
}

可以参考如下文章:

SpringBoot 统一异常、数据校验处理



5 回复 有任何疑惑可以回复我~
#1

willwei 提问者

我的意思是去掉hibernate-validator这个框架后,这些代码一样的能运行,引不引入都一样
2019-01-23 回复 有任何疑惑可以回复我~
#2

大先生灬 回复 willwei 提问者

在企业级开发里面,如果使用之前的那种,会导致代码的冗余,而且如果一个表中需要判断的字段过多写起来会有很多,如果加上这个,你每次使用的时候就没必要一个一个的去判断非空等等,这样在你每次使用新的model时只需要加上这样的注解,可以大大的减少您的代码量
2019-01-31 回复 有任何疑惑可以回复我~
#3

火凤 回复 willwei 提问者

springboot本身就引入了hibernate-validator
2019-03-02 回复 有任何疑惑可以回复我~
#4

慕容6363201 回复 willwei 提问者

一方面 spring-boot-starter-web 中已经包含了 hibernate-validator 校验包,因为 hibernate-validator 是经过 bean validation 认证过的对 bean validation api 的实现,因此你会觉得从 pom 中去掉了 hibernate-validator 以后代码一样能运行。
2019-06-12 回复 有任何疑惑可以回复我~
#5

慕容6363201 回复 willwei 提问者

另一方面老师也说了 javax.validation 是 javax 内部实现的一套 validator 的接口并且能以 annotation 的方式来做对应的校验,而 hibernate-validator 则是对这套接口规范的实现,因为项目中已经引入了 hibernate-validator 的依赖,通过 Validation.buildDefaultValidatorFactory().getValidator() 就能获得由 hibernate-validator 实现的 validator
2019-06-12 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消

为什么要引入hibernate-validator

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信