控制hibernate validation校驗順序
背景
專案使用的是hibernate validation校驗框架(不懂的可以參考這篇文章:Bean Validation)。對二維碼id的校驗,需要校驗長度及非法字元。由於非法字元是通過正則表示式匹配的,存在效率不高的問題,需要控制下校驗順序,即先校驗長度,然後再校驗正則表示式。
解決方案
hibernage validtaion框架有校驗分組的概念,指定校驗註解的時候可以加上分組,如果沒有指定,那麼預設是Default分組。我們先建立一個分組:
public interface Extended{}
然後校驗註解指定屬於這個分組:
@Length(min=3,max=100) // @Length沒有指定group,則屬於Default分組 @CharValid(groups = Extended.class) // @CharValid是個自定義校驗註解 String id;
然後建立一個分組順序:
@GroupSequence({Default.class, Extended.class})
public interface MySequence {}
通過@GroupSequence指定分組順序,例如這裡先校驗Default分組,再校驗Extended分組。然後將這個順序作為引數傳入校驗方法:
validator.validate(object, MySequence.class);
問題:
雖然指定了校驗順序,但是還是會去校驗@CharValid註解,還是會導致效率問題。這裡需要讓@Length校驗不通過時就直接返回,因此需要把校驗模式改為快速失敗:
// 原來的validator獲取方式 //ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); //validator = factory.getValidator(); validator = Validation.byProvider( HibernateValidator.class ) .configure() .failFast( true ) // 設定快速失敗 .buildValidatorFactory() .getValidator();
這樣一來@Length校驗不通過的話,就不會再去校驗後面的東西了,直接返回結果。
相關推薦
控制hibernate validation校驗順序
背景 專案使用的是hibernate validation校驗框架(不懂的可以參考這篇文章:Bean Validation)。對二維碼id的校驗,需要校驗長度及非法字元。由於非法字元是通過正則表示式匹配的,存在效率不高的問題,需要控制下校驗順序,即先校驗長度,
hibernate的校驗框架validation 和 HttpMessageConverter的配置方式
hibernate的校驗框架validation 和 httpmessageconverter的配置方式hibernate的校驗框架validation 和 HttpMessageConverter的配置方式好像是2個不相幹的配置內容,但他們都用到了<mvc:annotation-driven />
springboot使用hibernate validator校驗
配置 瀏覽器 .project else 12px 使用 很多 大於等於 ber 一、參數校驗 在開發中經常需要寫一些字段校驗的代碼,比如字段非空,字段長度限制,郵箱格式驗證等等,寫這些與業務邏輯關系不大的代碼個人感覺有兩個麻煩: 驗證代碼繁瑣,重復勞動 方法內
springmvc 註解開發之 validation校驗
專案中使用較多的是前端的校驗,比如頁面中js校驗。對於安全要求較高的建議在服務端進行校驗。 服務端校驗: 控制層controller:校驗頁面請求的引數的合法性,在服務端控制層controller校驗,不區分客戶端型別(瀏覽器、手機客戶端、遠端呼叫) 業務層se
Spring Boot 全域性異常處理 與 Hibernate Validator校驗框架整合
Hibernate Validator校驗框架的使用 Spring boot已經集成了hibernate-validator,不需要引入maven,其他框架也可以自己引入: <dependency> <groupId>org.h
SpringMVC框架(2)之(2.3 Validation校驗器)
Validation校驗器 SpringMVC使用 JSR-303 校驗規範,使用是 Hibernate Validator 【1】設定環境: 1.導jar包; 2.在處理器介面卡中配置校驗器; 3.建立資原始檔(eg:CustomValiationMessages.properti
Hibernate-validator校驗框架
1. 前言 Validator開發者使用手冊,適用後臺校驗功能的開發參考。文件中提到的功能,都是經過嚴謹測試驗證過的,保證可用,請開發人員放心設計和開發。 1.1. 背景 在我們日常後臺的開發中,涉及到很多的欄位驗證,一般普通的驗證框架就基本上可以滿足日常的開發需求,但
validation校驗----可以用來對於請求bean的必填引數進行校驗
validation的另一種用法,這種用法更加簡單便捷校驗工具類: package com.alibaba.banff.web.util; import java.util.HashMap; import java.util.Map; import java.
自定義Hibernate Validator校驗註解
定義註解 package com.futao.springmvcdemo.annotation; import com.futao.springmvcdemo.annotation.impl.IllegalValueCheckImpl; import c
高效使用hibernate-validator校驗框架
一、前言 高效、合理的使用hibernate-validator校驗框架可以提高程式的可讀性,以及減少不必要的程式碼邏輯。接下來會介紹一下常用一些使用方式。 二、常用註解說明 限制 說明 @Null 限制只能為
ssm之路(19)服務端validation校驗
校驗通常是前端校驗,比如js校驗,但對於安全要求較高的建議在服務端進行校驗 controller層:校驗檢驗頁面請求的引數型別的合法性(頁面提交的東西) service層:(使用較多)檢驗關鍵業務引數 dao層:一般不校驗: springmvc使用了hibernate
@Validation校驗後端資料
一、@Validation的簡單運用 1.引入依賴pom.xml <!-- 資料校驗依賴 hibernate validatorjar包--> <dependency> <groupId>javax.validation</gr
spring boot validation校驗
spring boot validation校驗 大部分校驗資料一般都是在前端校驗,個人認為後臺校驗的多處場景應該在安全上,防止post進入。 spring boot validation校驗主要有四步。 一、新增依賴 <dependency> <gr
Spring MVC 使用Hibernate的校驗框架錯誤:版本不相容
context: TestDome delegate: false ----------> Parent Classloader: [email protected] ] at org.springframewo
validation校驗規則
空檢查 @Null 驗證物件是否為null @NotNull 驗證物件是否不為null, 無法查檢長度為0的字串 @NotBlank 檢查約束字串是不是Null還有被Trim的長度是否大於0,只對字串,且會去掉前後空格. @NotEmp
angular-validation校驗數字
<input type="number" min="0" max="100" maxlength="5" class="number" ng-model="formData.age" valida
第十四篇: Spring Boot使用校驗框架validation校驗
Spring Boot在內部通過整合hibernate-validation已經實現了JSR-349驗證規範介面,在Spring Boot專案中只要直接使用就行了。一般用在Controller中用於驗證前端傳來的引數。驗證分兩種:對封裝的Bean進行驗證 或者 對方法簡單
005-優化web請求一-gzip壓縮、http緩存控制和緩存校驗[Pragma、Expires、Cache-Control、max-age、Last-Modified、用戶刷新訪問、避免過度304]
無法 新鮮度 開發者模式 請求報文 XML 自定義 server clas 存在 優化Web應用的典型技術:緩存控制頭信息、Gzip、應用緩存、ETag、反應型技術【異步方法調用和WebSocket】 一、模板緩存 spring.thymeleaf.cache=
element Form表單自定義校驗(針對區域性輸入控制元件區域性校驗)
最近幫朋友看一個vue專案,需要在整個表單的一個輸入控制元件上新增校驗,因為表單是動態建立的,就沒有考慮整個表單繫結rules,而是在<el-form-item>上綁定了rules,具體程式碼如下: template/html部分: <el-form-i
springmvc使用校驗框架validation校驗
1 springmvc校驗(服務端 ) b/s系統中對http請求資料的校驗多數在客戶端進行,這也是出於簡單及使用者體驗性上考慮,但是在一些安全性要求高的系統中服務端校驗是不可缺少的,本節主要學習springmvc實現控制層新增校驗。 Sprin