亚洲精品裸体-国产一区二区三区电影在线观看-国产精品7m凸凹视频分类-精品视频免费在线观看-激情综合婷婷-欧美人与拘性视交免费看

頻道 > 生活 >   >  正文

【Java】使用 validation 完成自定義校驗(yàn)注解

評(píng)論

總括:

validation 讓我們簡化了開發(fā)過程,可以使用簡單的一個(gè)注解就實(shí)現(xiàn)了很多常見的檢驗(yàn)數(shù)據(jù)的功能,同時(shí)支持自定義注解。spring-boot-starter-validation 是由 Spring Boot 整合的一套用于處理validation 的約定化自動(dòng)配置啟動(dòng)器。Spring 系列框架通過簡單的安裝依賴即可直接使用 validation 提供的參數(shù)校驗(yàn)功能,通過為接口添加 @Valid / @Validated 對特定參數(shù)進(jìn)行校驗(yàn)。

使用方法:

1. 安裝依賴

    org.springframework.boot    spring-boot-starter-validation

如果已使用 Spring Boot 框架可以不指定版本號(hào),依賴于Spring Boot 版本。


(資料圖)

2. 接口參數(shù)添加@Valid / @Validated 進(jìn)行參數(shù)校驗(yàn)

@RequestMapping("/doLogin")@ResponseBodypublic ResponseBean doLogin(@Valid LoginVo loginVo, HttpServletRequest request, HttpServletResponse response) {    return userService.doLogin(loginVo, request, response);}

3. 在需要進(jìn)行校驗(yàn)的參數(shù)的屬性上使用validation 基礎(chǔ)注解

/* 空檢查 */@Null     // 驗(yàn)證對象是否為null@NotNull        // 驗(yàn)證對象是否不為null, 無法查檢長度為0的字符串@NotBlank      // 檢查約束字符串是不是Null還有被Trim的長度是否大于0,只對字符串,且會(huì)去掉前后空格.@NotEmpty      // 檢查約束元素是否為NULL或者是EMPTY. /* Booelan檢查 */@AssertTrue      // 驗(yàn)證 Boolean 對象是否為 true  @AssertFalse         // 驗(yàn)證 Boolean 對象是否為 false  /* 長度檢查 */@Size(min=, max=)   // 驗(yàn)證對象(Array,Collection,Map,String)長度是否在給定的范圍之內(nèi)  @Length(min=, max=)    // 驗(yàn)證注解的元素值長度在min和max區(qū)間內(nèi)/* 日期檢查 */@Past          // 驗(yàn)證 Date 和 Calendar 對象是否在當(dāng)前時(shí)間之前  @Future          // 驗(yàn)證 Date 和 Calendar 對象是否在當(dāng)前時(shí)間之后  @Pattern          // 驗(yàn)證 String 對象是否符合正則表達(dá)式的規(guī)則/* 數(shù)值檢查,建議使用在Stirng,Integer類型,不建議使用在int類型上,因?yàn)楸韱沃禐椤啊睍r(shí)無法轉(zhuǎn)換為int,但可以轉(zhuǎn)換為Stirng為"",Integer為null */@Min      // 驗(yàn)證 Number 和 String 對象是否大等于指定的值  @Max      // 驗(yàn)證 Number 和 String 對象是否小等于指定的值  @DecimalMax     // 被標(biāo)注的值必須不大于約束中指定的最大值. 這個(gè)約束的參數(shù)是一個(gè)通過BigDecimal定義的最大值的字符串表示.小數(shù)存在精度@DecimalMin     // 被標(biāo)注的值必須不小于約束中指定的最小值. 這個(gè)約束的參數(shù)是一個(gè)通過BigDecimal定義的最小值的字符串表示.小數(shù)存在精度@Digits          // 驗(yàn)證 Number 和 String 的構(gòu)成是否合法  @Digits(integer=,fraction=) // 驗(yàn)證字符串是否是符合指定格式的數(shù)字,interger指定整數(shù)精度,fraction指定小數(shù)精度。@Range(min=, max=) // 驗(yàn)證注解的元素值在最小值和最大值之間 @Range(min=10000,max=50000,message="range.bean.wage")/* 其他檢驗(yàn) */@Valid               // 寫在方法參數(shù)前,遞歸的對該對象進(jìn)行校驗(yàn), 如果關(guān)聯(lián)對象是個(gè)集合或者數(shù)組,那么對其中的元素進(jìn)行遞歸校驗(yàn),如果是一個(gè)map,則對其中的值部分進(jìn)行校驗(yàn).(是否進(jìn)行遞歸驗(yàn)證)@CreditCardNumber    // 信用卡驗(yàn)證@Email               // 驗(yàn)證是否是郵件地址,如果為null,不進(jìn)行驗(yàn)證,算通過驗(yàn)證。@ScriptAssert(lang= ,script=, alias=) // 簡單腳本校驗(yàn)@URL(protocol=,host=, port=,regexp=, flags=) // IP地址校驗(yàn)                

4. 自定義參數(shù)校驗(yàn)注解

4.1 自定義注解

可以照抄@NotNull 等基礎(chǔ)校驗(yàn)注解的寫法

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})@Retention(RetentionPolicy.RUNTIME)@Documented@Constraint(        validatedBy = {IsMobileValidator.class})public @interface IsMobile {    boolean required() default true;    String message() default "手機(jī)號(hào)碼格式錯(cuò)誤";    Class[] groups() default {};    Class[] payload() default {};}

4.2 實(shí)現(xiàn)ConstraintValidator 接口,用以實(shí)現(xiàn)自定義參數(shù)校驗(yàn)邏輯

public class IsMobileValidator implements ConstraintValidator {      private boolean required = false;   /**   *@Param: {@link IsMobile } constraintAnnotation   *@Return: void   *@TODO: 初始化方法,可以用自定義注解中獲取值進(jìn)行初始化    **/    @Override    public void initialize(IsMobile constraintAnnotation) {        required = constraintAnnotation.required();    }       /**    *@Param: {@link String} value   *@Param: {@link ConstraintValidatorContext } constraintValidatorContext   *@Return: {@link boolean}   *@TODO: 實(shí)際校驗(yàn)自定義注解 value 值   **/    @Override    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {        if(required){            return ValidatorUtil.isMobile(value);        }else {            if(StringUtils.isEmpty(value)){                return true;            }else {                return ValidatorUtil.isMobile(value);            }        }    }}

其中IsMobile 為自定義注解名(根據(jù)個(gè)人需求自己命名),isValid 方法具體校驗(yàn)邏輯由個(gè)人需求及業(yè)務(wù)確定。使用時(shí)同基礎(chǔ)校驗(yàn)注解一般放置在需要校驗(yàn)的參數(shù)屬性上即可。

注意:自定義注解上必須有@Constraint 注解,其中validatedBy 指定執(zhí)行校驗(yàn)的類,該類必須實(shí)現(xiàn)ConstraintValidator 接口

標(biāo)簽:

今日熱點(diǎn)

熱點(diǎn)排行

最近更新

所刊載信息部分轉(zhuǎn)載自互聯(lián)網(wǎng),并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé)。郵箱:5855973@qq.com

聯(lián)系我們| 中國品牌網(wǎng) | 滬ICP備2022005074號(hào)-18 營業(yè)執(zhí)照  Copyright © 2018@. All Rights Reserved.

午夜日韩电影| 狠狠一区二区三区| 影音先锋亚洲一区| 日韩avvvv在线播放| 激情综合网站| 中文在线аv在线| 日本伊人色综合网| 精品视频97| 国产精品久久久久一区二区三区厕所| 免费亚洲一区| 成人看片黄a免费看视频| 在线亚洲伦理| 日韩和的一区二区| 爱高潮www亚洲精品| 男人操女人的视频在线观看欧美| 日韩国产欧美三级| 精品视频网站| 一区二区精品伦理...| 国产精品2区| jiujiure精品视频播放| yy6080久久伦理一区二区| 精品国产一区二区三区2021| 免费日韩av片| 97精品视频| 久久久影院免费| 欧美一级在线| 日韩在线成人| 97偷自拍亚洲综合二区| 国产精品**亚洲精品| 午夜久久一区| 青青草国产成人av片免费| 999久久久免费精品国产| 日本不良网站在线观看| 亚洲精品蜜桃乱晃| 人人狠狠综合久久亚洲| 国产亚洲一区| 欧美国产一级| 久久久久久亚洲精品美女| 蜜乳av另类精品一区二区| 91成人短视频在线观看| 狠色狠色综合久久| 久久影视三级福利片| 亚洲精品国产偷自在线观看| 欧美精品国产| 日韩在线观看一区二区| 日韩三级av| 欧美a级在线观看| 加勒比色老久久爱综合网| 欧美激情啪啪| 天天天综合网| www.久久热| 蜜臂av日日欢夜夜爽一区| 日韩欧美中文字幕一区二区三区 | 国产精品婷婷| 国产激情一区| 中文字幕在线免费观看视频| 丁香五月缴情综合网| 久久中文字幕一区二区三区| 99在线精品视频在线观看| 国内精品久久久久久久影视简单| 国产精品成人av| 欧美国产不卡| 中文字幕一区二区三区久久网站 | 国产精品theporn| 91日韩免费| 久久人人88| 日韩毛片一区| 亚洲精品小说| 日本一区二区三区视频在线看| 日韩国产网站| 亚洲女同另类| 亚洲三区欧美一区国产二区| 久久99国产精品二区高清软件| 欧美日韩国产精品一区二区亚洲| 日韩av网站在线免费观看| 国产精品一区二区三区www| 日韩在线观看一区二区三区| 日韩一区中文| 国产精品国产一区| 欧美日韩在线观看视频小说| 综合伊思人在钱三区| 欧美天堂在线| 亚洲欧美日韩在线观看a三区| 高清日韩中文字幕| 最新国产精品| 日本高清不卡一区二区三区视频| 五月精品视频| 玖玖玖免费嫩草在线影院一区| 日本不卡视频在线| 日韩中文影院| 视频一区中文字幕国产| 欧美日韩中文一区二区| 少妇精品在线| 国产精品一区免费在线| 国产精品最新自拍| 日韩久久精品| 丝袜诱惑亚洲看片| 午夜免费一区| 天堂网av成人| 日韩精品一级| 欧美禁忌电影| 欧美国产日本| 欧美成人家庭影院| 漫画在线观看av| 免费精品视频| 亚洲经典在线看| 久久精品播放| 精品五月天堂| 国产精品高潮呻吟久久久久| 少妇精品久久久一区二区三区| 另类的小说在线视频另类成人小视频在线| 日韩在线看片| 国产精品久久天天影视| 蜜桃伊人久久| 免费观看一级特黄欧美大片| 亚洲少妇一区| 亚洲欧美日韩国产一区| 香蕉精品视频在线观看| 久久精品二区三区| 国产伦乱精品| 精品久久美女| 久久精品卡一| 欧洲精品一区| 久久蜜桃资源一区二区老牛| 成人在线视频免费观看| 国产成人福利av| 久久精品色综合| 99精品全国免费观看视频软件| 欧美三级乱码| 大奶一区二区三区| 精品国产乱码久久久久久1区2匹| 国产精品22p| 精品视频免费在线观看| 日韩精品影视| 欧美另类69xxxxx| 亚洲激情中文| 嫩草成人www欧美| av资源中文在线| 欧美裸体视频| 欧美成人毛片| 亚洲精品资源| www.成人在线.com| 日韩电影网1区2区| 玖玖精品一区| 精品欧美午夜寂寞影院| 亚洲二区三区不卡| 三级欧美在线一区| 高潮一区二区| 欧美xxxx性| av一级久久| 午夜电影一区| 久久国产直播| 另类天堂av| 偷拍精品精品一区二区三区| 免费视频一区| 婷婷综合电影| 欧美美女黄色| 一本色道久久综合亚洲精品不| 捆绑调教日本一区二区三区| 国产亚洲精品精品国产亚洲综合| 亚洲毛片一区| 日韩在线观看一区二区三区| 99久久久久| 久久久久久久尹人综合网亚洲| a一区二区三区| 久久一区二区三区四区五区| 国产精品免费99久久久| 91午夜精品| 国产一区二区中文| 色综合色综合| 日本91福利区| 成人精品动漫一区二区三区| 亚洲精品123区| av在线不卡精品| 国产一区二区欧美| 欧美人体视频| 久久国产66| 一道本一区二区| 免费一级欧美片在线观看网站| 天天超碰亚洲| 电影亚洲精品噜噜在线观看| 亚洲精品欧洲| 精品中国亚洲| 九色porny丨入口在线| 美女视频黄 久久| 在线综合色站| 丝袜美腿一区二区三区| 日韩国产在线观看一区| 国产精品对白| 日韩综合一区| 在线高清欧美| 欧美日韩在线二区| 日韩大片免费观看| 国产精品亚洲欧美一级在线| 欧美色图在线播放| 日韩av电影天堂| 欧美日韩水蜜桃| 日本美女一区| 日本人妖一区二区| 日韩午夜高潮|