国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Hibernate Validator入門及使用

TANKING / 1864人閱讀

摘要:前言最近在開發(fā)某個(gè)模塊的功能時(shí),里面包含大量對(duì)請(qǐng)求參數(shù)判空和驗(yàn)證的步驟且參數(shù)繁多,存在大量的重復(fù)判斷,驗(yàn)證影響代碼的美觀遂決定優(yōu)化這部分代碼。

前言

最近在開發(fā)某個(gè)模塊的功能時(shí),里面包含大量對(duì)請(qǐng)求參數(shù)判空和驗(yàn)證的步驟且參數(shù)繁多,存在大量的重復(fù)判斷,驗(yàn)證影響代碼的美觀遂決定優(yōu)化這部分代碼。SpringBoot自帶了參數(shù)驗(yàn)證框Hibernate Validator,下面是自己的學(xué)習(xí)筆記。

依賴
若使用SptingBoot,在spring-boot-starter-web包中包含此框架依賴,其他框架加入依賴即可
    
      org.hibernate.validator
      hibernate-validator
      6.0.17.Final
    

個(gè)人認(rèn)為官方文檔是最好的資料,如有需要請(qǐng)瀏覽: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;
    
    // 密碼需要匹配正則表達(dá)式
    @Pattern(regexp = "^[A-Z]{0,3}[0-9]{5,10}")
    private String password;

    // 驗(yàn)證是否是正確的電子郵件格式
    @Email
    private String email;

    // 家庭住址不為空
    @NotNull
    private String address;

    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}

使用Validator校驗(yàn)傳入?yún)?shù)是否符合規(guī)則

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() {
        // 獲得默認(rèn)的Validator
        Validator validator = Validation.buildDefaultValidatorFactory().getValidator();

        Consumer consumer = new Consumer();
        consumer.setUserName("longhaicheng");
        consumer.setAddress(null);
        consumer.setEmail("123456789");
        // 驗(yàn)證consumer是否符合要求,并返回set集合,若set集合size()返回>0,說明存在違規(guī)的參數(shù),通過日志打印
        Set> constraintViolations = validator.validate(consumer);
        if (constraintViolations.size() > 0) {
            for (ConstraintViolation constraintViolation : constraintViolations) {
                String message = constraintViolation.getMessage();
                log.error("message:{}", message);
            }
        }
    }
}

日志返回:

參數(shù)校驗(yàn)失敗返回錯(cuò)誤消息,也可以定制錯(cuò)誤消息,通過注解中的message屬性配置

@NotBlank(message = "字段[userName]不可為空")
@Pattern(regexp = "^[A-Z]{0,3}[0-9]{5,10}",message = "字段[password]需匹配表達(dá)式[{regexp}]")
@Email(message = "錯(cuò)誤的電子郵箱格式")
@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()
                // 快速失敗(即:第一個(gè)參數(shù)校驗(yàn)失敗就返回錯(cuò)誤信息,而不是校驗(yàn)所有的參數(shù),并一次性返回所有的錯(cuò)誤信息)
                .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 constraintViolation : constraintViolations) {
                String message = constraintViolation.getMessage();
                log.error("errorMessage:{}", message);
            }
        }
    }
}
           
               
                                           
                       
                 
            
                     
             
               

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/77917.html

相關(guān)文章

  • Hibernate Validator入門使用

    摘要:前言最近在開發(fā)某個(gè)模塊的功能時(shí),里面包含大量對(duì)請(qǐng)求參數(shù)判空和驗(yàn)證的步驟且參數(shù)繁多,存在大量的重復(fù)判斷,驗(yàn)證影響代碼的美觀遂決定優(yōu)化這部分代碼。 前言 最近在開發(fā)某個(gè)模塊的功能時(shí),里面包含大量對(duì)請(qǐng)求參數(shù)判空和驗(yàn)證的步驟且參數(shù)繁多,存在大量的重復(fù)判斷,驗(yàn)證影響代碼的美觀遂決定優(yōu)化這部分代碼。SpringBoot自帶了參數(shù)驗(yàn)證框Hibernate Validator,下面是自己的學(xué)習(xí)筆記。 ...

    kid143 評(píng)論0 收藏0
  • Hibernate Validator—更簡(jiǎn)潔的參數(shù)校驗(yàn)一個(gè)util

    摘要:代碼地址簡(jiǎn)介是項(xiàng)目中的一個(gè)數(shù)據(jù)校驗(yàn)框架,是的參考實(shí)現(xiàn),除了提供了規(guī)范中所有內(nèi)置的實(shí)現(xiàn),還有一些附加的。使用能夠?qū)?shù)據(jù)校驗(yàn)從業(yè)務(wù)代碼中脫離出來,增加代碼可讀性,同時(shí)也讓數(shù)據(jù)校驗(yàn)變得更加方便簡(jiǎn)單。 代碼地址 https://github.com/wheel-orga... 簡(jiǎn)介 hibernate-validator是Hibernate項(xiàng)目中的一個(gè)數(shù)據(jù)校驗(yàn)框架,是Bean Validati...

    Jiavan 評(píng)論0 收藏0
  • Spring Boot - 表單校驗(yàn)(JSR303&Hibernate Validator

    摘要:初步使用主要使用注解的方式對(duì)進(jìn)行校驗(yàn),第一個(gè)例子在需要校驗(yàn)的字段上指定約束條件然后在中可以這樣調(diào)用,加上注解即可。如果校驗(yàn)失敗,默認(rèn)會(huì)返回框架的出錯(cuò)信息。指定到的分組名會(huì)全部進(jìn)行校驗(yàn),不指定的不校驗(yàn)。 Spring Boot - 表單校驗(yàn)(JSR303&Hibernate Validator) 回顧 Spring Boot - 初識(shí) Hello World Spring Boot -...

    tinyq 評(píng)論0 收藏0
  • 利用注解對(duì)Bean進(jìn)行校驗(yàn)

    摘要:所以就有今天的話題利用注解對(duì)進(jìn)行校驗(yàn)。利用注解對(duì)進(jìn)行校驗(yàn),主要是利用框架,實(shí)現(xiàn)了的接口關(guān)于校驗(yàn)的接口,直接使用非常方便,省時(shí)省力。 最近寫業(yè)務(wù)代碼,因?yàn)轫撁鎻?fù)雜,導(dǎo)致對(duì)應(yīng)的Bean屬性非常多,而產(chǎn)品大佬又提出各種校驗(yàn)要求。 emmmmmm......如果寫if條件來校驗(yàn),那簡(jiǎn)直是又臭又長(zhǎng)。 所以就有今天的話題——利用注解對(duì)Bean進(jìn)行校驗(yàn)。 利用注解對(duì)Bean進(jìn)行校驗(yàn),主要是利用hib...

    dmlllll 評(píng)論0 收藏0
  • JAVA中通過Hibernate-Validation進(jìn)行參數(shù)驗(yàn)證

    摘要:在開發(fā)服務(wù)器端代碼時(shí),我們會(huì)遇到對(duì)外部傳來的參數(shù)合法性進(jìn)行驗(yàn)證,而提供了一些常用的參數(shù)校驗(yàn)注解,我們可以拿來使用。 在開發(fā)JAVA服務(wù)器端代碼時(shí),我們會(huì)遇到對(duì)外部傳來的參數(shù)合法性進(jìn)行驗(yàn)證,而hibernate-validator提供了一些常用的參數(shù)校驗(yàn)注解,我們可以拿來使用。1.maven中引入hibernate-validator對(duì)應(yīng)的jar: org.hibernate ...

    Coly 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<