亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么要引入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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號