摘要:前言最近在開發某個模塊的功能時,里面包含大量對請求參數判空和驗證的步驟且參數繁多,存在大量的重復判斷,驗證影響代碼的美觀遂決定優化這部分代碼。
前言
最近在開發某個模塊的功能時,里面包含大量對請求參數判空和驗證的步驟且參數繁多,存在大量的重復判斷,驗證影響代碼的美觀遂決定優化這部分代碼。SpringBoot自帶了參數驗證框Hibernate Validator,下面是自己的學習筆記。
依賴若使用SptingBoot,在spring-boot-starter-web包中包含此框架依賴,其他框架加入依賴即可
org.hibernate.validator hibernate-validator 6.0.17.Final
個人認為官方文檔是最好的資料,如有需要請瀏覽:https://docs.jboss.org/hibern...
使用新建類User
package com.longhc.uublog; import com.alibaba.fastjson.JSON; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; import java.io.Serializable; @Getter @Setter @NoArgsConstructor public class User implements Serializable { private static final long serialVersionUID = -2164567260938543876L; private String userId; // 字段userName不可為null,且length>0 @NotBlank private String userName; // 密碼需要匹配正則表達式 @Pattern(regexp = "^[A-Z]{0,3}[0-9]{5,10}") private String password; // 驗證是否是正確的電子郵件格式 @Email private String email; // 家庭住址不為空 @NotNull private String address; @Override public String toString() { return JSON.toJSONString(this); } }
使用Validator校驗傳入參數是否符合規則
package com.longhc.uublog; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import java.util.Set; @Slf4j public class VaildatorTest { @Test public void test() { // 獲得默認的Validator Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); Consumer consumer = new Consumer(); consumer.setUserName("longhaicheng"); consumer.setAddress(null); consumer.setEmail("123456789"); // 驗證consumer是否符合要求,并返回set集合,若set集合size()返回>0,說明存在違規的參數,通過日志打印 Set> constraintViolations = validator.validate(consumer); if (constraintViolations.size() > 0) { for (ConstraintViolation constraintViolation : constraintViolations) { String message = constraintViolation.getMessage(); log.error("message:{}", message); } } } }
日志返回:
參數校驗失敗返回錯誤消息,也可以定制錯誤消息,通過注解中的message屬性配置
@NotBlank(message = "字段[userName]不可為空") @Pattern(regexp = "^[A-Z]{0,3}[0-9]{5,10}",message = "字段[password]需匹配表達式[{regexp}]") @Email(message = "錯誤的電子郵箱格式") @NotNull(message = "家庭住址不為空")
要在Spring中使用此框架
package com.longhc.uublog; import lombok.extern.slf4j.Slf4j; import org.hibernate.validator.HibernateValidator; import org.springframework.stereotype.Component; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import java.util.Set; @Component @Slf4j public class ValidatorUtil { public static Validator getValidator() { // 使用HibernateValidator Validator validator = Validation.byProvider(HibernateValidator.class) .configure() // 快速失敗(即:第一個參數校驗失敗就返回錯誤信息,而不是校驗所有的參數,并一次性返回所有的錯誤信息) .failFast(true) .buildValidatorFactory() .getValidator(); return validator; } /** * @param object object * @param groups groups */ public void validateObject(Object object, Class>... groups) { Set> constraintViolations = getValidator().validate(object, groups); if (constraintViolations.size() > 0) { for (ConstraintViolation
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/77917.html
摘要:前言最近在開發某個模塊的功能時,里面包含大量對請求參數判空和驗證的步驟且參數繁多,存在大量的重復判斷,驗證影響代碼的美觀遂決定優化這部分代碼。 前言 最近在開發某個模塊的功能時,里面包含大量對請求參數判空和驗證的步驟且參數繁多,存在大量的重復判斷,驗證影響代碼的美觀遂決定優化這部分代碼。SpringBoot自帶了參數驗證框Hibernate Validator,下面是自己的學習筆記。 ...
摘要:代碼地址簡介是項目中的一個數據校驗框架,是的參考實現,除了提供了規范中所有內置的實現,還有一些附加的。使用能夠將數據校驗從業務代碼中脫離出來,增加代碼可讀性,同時也讓數據校驗變得更加方便簡單。 代碼地址 https://github.com/wheel-orga... 簡介 hibernate-validator是Hibernate項目中的一個數據校驗框架,是Bean Validati...
摘要:初步使用主要使用注解的方式對進行校驗,第一個例子在需要校驗的字段上指定約束條件然后在中可以這樣調用,加上注解即可。如果校驗失敗,默認會返回框架的出錯信息。指定到的分組名會全部進行校驗,不指定的不校驗。 Spring Boot - 表單校驗(JSR303&Hibernate Validator) 回顧 Spring Boot - 初識 Hello World Spring Boot -...
摘要:所以就有今天的話題利用注解對進行校驗。利用注解對進行校驗,主要是利用框架,實現了的接口關于校驗的接口,直接使用非常方便,省時省力。 最近寫業務代碼,因為頁面復雜,導致對應的Bean屬性非常多,而產品大佬又提出各種校驗要求。 emmmmmm......如果寫if條件來校驗,那簡直是又臭又長。 所以就有今天的話題——利用注解對Bean進行校驗。 利用注解對Bean進行校驗,主要是利用hib...
摘要:在開發服務器端代碼時,我們會遇到對外部傳來的參數合法性進行驗證,而提供了一些常用的參數校驗注解,我們可以拿來使用。 在開發JAVA服務器端代碼時,我們會遇到對外部傳來的參數合法性進行驗證,而hibernate-validator提供了一些常用的參數校驗注解,我們可以拿來使用。1.maven中引入hibernate-validator對應的jar: org.hibernate ...
閱讀 3203·2021-09-06 15:02
閱讀 2248·2019-08-30 15:48
閱讀 3446·2019-08-29 11:08
閱讀 3289·2019-08-26 13:55
閱讀 2448·2019-08-26 13:35
閱讀 3166·2019-08-26 12:11
閱讀 2602·2019-08-26 11:48
閱讀 888·2019-08-26 11:42