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

資訊專欄INFORMATION COLUMN

Hibernate Validator—更簡潔的參數校驗及一個util

Jiavan / 2584人閱讀

摘要:代碼地址簡介是項目中的一個數據校驗框架,是的參考實現,除了提供了規范中所有內置的實現,還有一些附加的。使用能夠將數據校驗從業務代碼中脫離出來,增加代碼可讀性,同時也讓數據校驗變得更加方便簡單。

代碼地址
https://github.com/wheel-orga...
簡介

hibernate-validator是Hibernate項目中的一個數據校驗框架,是Bean Validation 的參考實現,hibernate-validator除了提供了JSR 303規范中所有內置constraint 的實現,還有一些附加的constraint。

使用hibernate-validator能夠將數據校驗從業務代碼中脫離出來,增加代碼可讀性,同時也讓數據校驗變得更加方便、簡單。

官網地址:http://hibernate.org/validator/

如何使用
項目中已經引入了需要的api,無需重復引入

    org.hibernate
    hibernate-validator
    6.0.16.Final

在要校驗的POJO上加上以下注解即可

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

更多功能,如:自定義校驗規則、分組校驗、關聯參數聯合校驗請查看官網或百度

Dubbo中使用Hibernate Validator校驗入參

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

在客戶端驗證參數

在服務器端驗證參數

在代碼里校驗入參
//obj為包含Hibernate Validator注解的POJO
//快速失敗模式
ValidResult validResult = ValidationUtil.fastFailValidate(obj);
//obj為包含Hibernate Validator注解的POJO
//全部校驗模式
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;
}

單測:ValidationUtilTest

性能測試

結果如圖:

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

原因:沒有引入javax.el或者javax.el版本沖突

解決:
沒有引入的話引入

        
            org.glassfish
            javax.el
            3.0.1-b09
        

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

        
            org.hibernate
            hibernate-validator
            4.2.0.Final
        

參考解決

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77675.html

相關文章

  • Hibernate Validator入門使用

    摘要:前言最近在開發某個模塊的功能時,里面包含大量對請求參數判空和驗證的步驟且參數繁多,存在大量的重復判斷,驗證影響代碼的美觀遂決定優化這部分代碼。 前言 最近在開發某個模塊的功能時,里面包含大量對請求參數判空和驗證的步驟且參數繁多,存在大量的重復判斷,驗證影響代碼的美觀遂決定優化這部分代碼。SpringBoot自帶了參數驗證框Hibernate Validator,下面是自己的學習筆記。 ...

    TANKING 評論0 收藏0
  • Hibernate Validator入門使用

    摘要:前言最近在開發某個模塊的功能時,里面包含大量對請求參數判空和驗證的步驟且參數繁多,存在大量的重復判斷,驗證影響代碼的美觀遂決定優化這部分代碼。 前言 最近在開發某個模塊的功能時,里面包含大量對請求參數判空和驗證的步驟且參數繁多,存在大量的重復判斷,驗證影響代碼的美觀遂決定優化這部分代碼。SpringBoot自帶了參數驗證框Hibernate Validator,下面是自己的學習筆記。 ...

    kid143 評論0 收藏0
  • 利用注解對Bean進行校驗

    摘要:所以就有今天的話題利用注解對進行校驗。利用注解對進行校驗,主要是利用框架,實現了的接口關于校驗的接口,直接使用非常方便,省時省力。 最近寫業務代碼,因為頁面復雜,導致對應的Bean屬性非常多,而產品大佬又提出各種校驗要求。 emmmmmm......如果寫if條件來校驗,那簡直是又臭又長。 所以就有今天的話題——利用注解對Bean進行校驗。 利用注解對Bean進行校驗,主要是利用hib...

    dmlllll 評論0 收藏0
  • JAVA中通過Hibernate-Validation進行參數驗證

    摘要:在開發服務器端代碼時,我們會遇到對外部傳來的參數合法性進行驗證,而提供了一些常用的參數校驗注解,我們可以拿來使用。 在開發JAVA服務器端代碼時,我們會遇到對外部傳來的參數合法性進行驗證,而hibernate-validator提供了一些常用的參數校驗注解,我們可以拿來使用。1.maven中引入hibernate-validator對應的jar: org.hibernate ...

    Coly 評論0 收藏0
  • 記錄_使用JSR303規范進行數據校驗

    摘要:時間年月日星期三說明使用規范校驗接口請求參數源碼第一章理論簡介背景介紹如今互聯網項目都采用接口形式進行開發。該規范定義了一個元數據模型,默認的元數據來源是注解。 時間:2017年11月08日星期三說明:使用JSR303規范校驗http接口請求參數 源碼:https://github.com/zccodere/s... 第一章:理論簡介 1-1 背景介紹 如今互聯網項目都采用HTTP接口...

    187J3X1 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<