成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Hibernate Validator—更簡(jiǎn)潔的參數(shù)校驗(yàn)及一個(gè)util

Jiavan / 2607人閱讀

摘要:代碼地址簡(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ù)代碼中脫離出來(lái),增加代碼可讀性,同時(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 Validation 的參考實(shí)現(xiàn),hibernate-validator除了提供了JSR 303規(guī)范中所有內(nèi)置constraint 的實(shí)現(xiàn),還有一些附加的constraint。

使用hibernate-validator能夠?qū)?shù)據(jù)校驗(yàn)從業(yè)務(wù)代碼中脫離出來(lái),增加代碼可讀性,同時(shí)也讓數(shù)據(jù)校驗(yàn)變得更加方便、簡(jiǎn)單。

官網(wǎng)地址:http://hibernate.org/validator/

如何使用
項(xiàng)目中已經(jīng)引入了需要的api,無(wú)需重復(fù)引入

    org.hibernate
    hibernate-validator
    6.0.16.Final

在要校驗(yàn)的POJO上加上以下注解即可

注解 用途
Valid 遞歸的對(duì)關(guān)聯(lián)的對(duì)象進(jìn)行校驗(yàn)
AssertFalse 用于boolean字段,該字段的值只能為false
AssertTrue 用于boolean字段,該字段只能為true
DecimalMax(value) 被注釋的元素必須是一個(gè)數(shù)字,只能大于或等于該值
DecimalMin(value) 被注釋的元素必須是一個(gè)數(shù)字,只能小于或等于該值
Digits(integer,fraction) 檢查是否是一種數(shù)字的(整數(shù),小數(shù))的位數(shù)
Future 檢查該字段的日期是否是屬于將來(lái)的日期
FutureOrPresent 判斷日期是否是將來(lái)或現(xiàn)在日期
Past 檢查該字段的日期是在過(guò)去
PastOrPresent 判斷日期是否是過(guò)去或現(xiàn)在日期
Max(value) 該字段的值只能小于或等于該值
Min(value) 該字段的值只能大于或等于該值
Negative 判斷負(fù)數(shù)
NegativeOrZero 判斷負(fù)數(shù)或0
Positive 判斷正數(shù)
PositiveOrZero 判斷正數(shù)或0
NotNull 不能為null
Null 必須為 null
Pattern(value) 被注釋的元素必須符合指定的正則表達(dá)式
Size(max, min) 檢查該字段的size是否在min和max之間,可以是字符串、數(shù)組、集合、Map等
Length(max, min) 判斷字符串長(zhǎng)度
CreditCardNumber 被注釋的字符串必須通過(guò)Luhn校驗(yàn)算法,銀行卡,信用卡等號(hào)碼一般都用Luhn計(jì)算合法性
Email 被注釋的元素必須是電子郵箱地址
Length(min=, max=) 被注釋的字符串的大小必須在指定的范圍內(nèi)
NotBlank 只能用于字符串不為null,并且字符串trim()以后length要大于0
NotEmpty 集合對(duì)象的元素不為0,即集合不為空,也可以用于字符串不為null
Range(min=, max=) 被注釋的元素必須在合適的范圍內(nèi)
SafeHtml classpath中要有jsoup包
ScriptAssert 要有Java Scripting API 即JSR 223("Scripting for the JavaTMPlatform")的實(shí)現(xiàn)
URL(protocol=,host=,port=,regexp=,flags=) 被注釋的字符串必須是一個(gè)有效的url

更多功能,如:自定義校驗(yàn)規(guī)則、分組校驗(yàn)、關(guān)聯(lián)參數(shù)聯(lián)合校驗(yàn)請(qǐng)查看官網(wǎng)或百度

Dubbo中使用Hibernate Validator校驗(yàn)入?yún)?/b>

無(wú)需util,Dubbo接口配置上的validation為true即可

在客戶端驗(yàn)證參數(shù)

在服務(wù)器端驗(yàn)證參數(shù)

在代碼里校驗(yàn)入?yún)?/b>
//obj為包含Hibernate Validator注解的POJO
//快速失敗模式
ValidResult validResult = ValidationUtil.fastFailValidate(obj);
//obj為包含Hibernate Validator注解的POJO
//全部校驗(yàn)?zāi)J?ValidResult validResult = ValidationUtil.allCheckValidate(obj);
樣例
public class ParamTestDTO implements Serializable {

    private static final long serialVersionUID = 7123882542534668217L;

    @AssertTrue(message = "Error True")
    private Boolean testTrue;

    @AssertFalse(message = "Error False")
    private Boolean testFalse;

    @DecimalMax(value = "10", message = "Error StrMax")
    private String testStrMax;

    @DecimalMin(value = "1", message = "Error StrMin")
    private String testStrMin;

    @Max(value = 10, message = "Error Max")
    private Integer testMax;

    @Min(value = 1, message = "Error Min")
    private Double testMin;

    @Digits(integer = 2, fraction = 3, message = "Error Dig")
    private BigDecimal testDig;

    @Past(message = "Error Past")
    private Date testPast;

    @Future(message = "Error Future")
    private Date testFuture;

    @Null(message = "Error Null")
    private String testNull;

    @NotNull(message = "Error NonNull")
    private String testNonNull;

    @Pattern(regexp = "^[0-9]?[0-9]$", message = "Error Pattern")
    private String testPattern;

    @Size(min = 1, max = 10, message = "Error Size")
    private List testSize;

    @Length(min = 1, max = 10, message = "Error Length")
    private String testLength;

    @NotBlank(message = "Error Blank")
    private String testBlank;

    @NotEmpty(message = "Error NotEmpty")
    private String testEmpty;

    @Range(min = 1, max = 10, message = "Error Range")
    private String testRange;
}

單測(cè):ValidationUtilTest

性能測(cè)試

結(jié)果如圖:

可能遇到的bug
HV000183: Unable to initialize "javax.el.ExpressionFactory". Check that you have the EL dependencies on the classpath, or use ParameterMessageInterpolator instead

原因:沒(méi)有引入javax.el或者javax.el版本沖突

解決:
沒(méi)有引入的話引入

        
            org.glassfish
            javax.el
            3.0.1-b09
        

如果版本沖突的話先嘗試去除依賴,或者換個(gè)低版本的hibernate-validator

        
            org.hibernate
            hibernate-validator
            4.2.0.Final
        

參考解決

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/77675.html

相關(guān)文章

  • Hibernate Validator入門(mén)使用

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

    TANKING 評(píng)論0 收藏0
  • Hibernate Validator入門(mén)使用

    摘要:前言最近在開(kāi)發(fā)某個(gè)模塊的功能時(shí),里面包含大量對(duì)請(qǐng)求參數(shù)判空和驗(yàn)證的步驟且參數(shù)繁多,存在大量的重復(fù)判斷,驗(yàn)證影響代碼的美觀遂決定優(yōu)化這部分代碼。 前言 最近在開(kāi)發(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
  • 利用注解對(duì)Bean進(jìn)行校驗(yàn)

    摘要:所以就有今天的話題利用注解對(duì)進(jìn)行校驗(yàn)。利用注解對(duì)進(jìn)行校驗(yàn),主要是利用框架,實(shí)現(xiàn)了的接口關(guān)于校驗(yàn)的接口,直接使用非常方便,省時(shí)省力。 最近寫(xiě)業(yè)務(wù)代碼,因?yàn)轫?yè)面復(fù)雜,導(dǎo)致對(duì)應(yīng)的Bean屬性非常多,而產(chǎn)品大佬又提出各種校驗(yàn)要求。 emmmmmm......如果寫(xiě)if條件來(lái)校驗(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中通過(guò)Hibernate-Validation進(jìn)行參數(shù)驗(yàn)證

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

    Coly 評(píng)論0 收藏0
  • 記錄_使用JSR303規(guī)范進(jìn)行數(shù)據(jù)校驗(yàn)

    摘要:時(shí)間年月日星期三說(shuō)明使用規(guī)范校驗(yàn)接口請(qǐng)求參數(shù)源碼第一章理論簡(jiǎn)介背景介紹如今互聯(lián)網(wǎng)項(xiàng)目都采用接口形式進(jìn)行開(kāi)發(fā)。該規(guī)范定義了一個(gè)元數(shù)據(jù)模型,默認(rèn)的元數(shù)據(jù)來(lái)源是注解。 時(shí)間:2017年11月08日星期三說(shuō)明:使用JSR303規(guī)范校驗(yàn)http接口請(qǐng)求參數(shù) 源碼:https://github.com/zccodere/s... 第一章:理論簡(jiǎn)介 1-1 背景介紹 如今互聯(lián)網(wǎng)項(xiàng)目都采用HTTP接口...

    187J3X1 評(píng)論0 收藏0

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

0條評(píng)論

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