精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

非Controller控制層參數(shù)校驗要怎么做

開發(fā) 前端
本文介紹了在非Controller控制層參數(shù)校驗的兩種方法,不管是哪種獲取方法只要能達到結果就行,不過建議使用后者,可以把后者封裝成工具類,統(tǒng)一管理校驗方法。

上篇文章中我們介紹了如何自定義Springboot參數(shù)約束注解和約束校驗器,默認情況下,Springboot中的參數(shù)校驗都是在Controller控制層完成的,那如果我們想要在非Controller控制層 進行參數(shù)校驗要怎么辦呢?本文將介紹非Controller控制層 參數(shù)校驗的方法。

看源碼

從上篇文章中我們知道Spring提供了JSR-303 的一個變種  @Validated  ,下面我們看一下 @Validated 的部分源碼。

圖片圖片

Validator

看注釋官方是讓我們?nèi)タ纯碫alidator#validate() 方法,官方讓我看我們就去看唄,索性直接看Validator 源碼:

public interface Validator {

 <T> Set<ConstraintViolation<T>> validate(T object, Class<?>... groups);

 <T> Set<ConstraintViolation<T>> validateProperty(T object,
              String propertyName,
              Class<?>... groups);

 <T> Set<ConstraintViolation<T>> validateValue(Class<T> beanType,
              String propertyName,
              Object value,
              Class<?>... groups);

 BeanDescriptor getConstraintsForClass(Class<?> clazz);

 <T> T unwrap(Class<T> type);

 ExecutableValidator forExecutables();
}

那Validator是做什么用的呢?

Validator 接口 定義了用于執(zhí)行驗證的方法,用于驗證對象的字段值是否符合指定的約束條件。它主要提供了以下幾個核心方法:

  1. <T> Set<ConstraintViolation<T>> validate(T object, Class<?>... groups):

該方法用于驗證給定對象是否符合指定的約束條件。

參數(shù) object是要驗證的對象,參數(shù) groups可選,表示驗證組。

返回一個 Set 集合,其中包含違反約束條件的 ConstraintViolation 對象。

  1. <T> Set<ConstraintViolation<T>> validateProperty(T object, String propertyName, Class<?>... groups):

      該方法用于驗證給定對象的特定屬性是否符合指定的約束條件。

      參數(shù) object是要驗證的對象,參數(shù) propertyName是屬性名,參數(shù) groups可選,表示驗證組。

      返回一個 Set 集合,其中包含違反約束條件的 ConstraintViolation 對象。

  1. <T> Set<ConstraintViolation<T>> validateValue(Class<T> beanType, String propertyName, Object value, Class<?>... groups):

       該方法用于驗證給定屬性值是否符合指定的約束條件,而不需要實際創(chuàng)建對象實例。

       參數(shù) beanType是對象類型,參數(shù) propertyName是屬性名,參數(shù) value是屬性值,參數(shù) groups可選,表示驗證組。

       返回一個 Set 集合,其中包含違反約束條件的 ConstraintViolation 對象。

這些方法能夠?qū)?Java 對象進行全面的驗證,從整個對象級別到單個屬性值的驗證,都可以通過 Validator 接口提供的方法來實現(xiàn)。

實操

從上面的介紹我們可以看到,實際上參數(shù)校驗是通過 Validator 接口的實現(xiàn)類來驗證的。下面我們通過代碼來看一下 Validator 接口怎么用?

先把我們的老演員拿出來,下面再校驗就用它了。

@Data
public class UserBean {

    @NotBlank
    private String username;

    @Min(value = 18)
    private Integer age;
}

依賴Spring 容器

JSR 303 提供了 Validator 接口作為規(guī)范接口,用于實現(xiàn)數(shù)據(jù)校驗功能。在實際應用中,我們并不需要自己從頭開始實現(xiàn)這一接口,因為已經(jīng)有官方參考實現(xiàn)——Hibernate Validator。Spring 框架作為廣泛使用的Java開發(fā)框架,自然也遵循這一原則,它并沒有重復造輪子,而是采用了 Hibernate Validator 的實現(xiàn)來支持校驗功能。

因此,當我們使用 Spring 框架進行開發(fā)時,通常意味著我們可以直接利用 Spring 提供的集成,將 Validator 接口注入到我們的組件中,然后方便地使用它來進行數(shù)據(jù)校驗。

下面來看下如何在Springboot中使用 Validator 接口。

@SpringBootTest
class SpringbootPracticeApplicationTests {
 @Resource
    private Validator validator;

 @Test
    public void testValidator(){
        UserBean userBean = new UserBean();
        userBean.setAge(17);
        userBean.setUsername(null);

        Set<ConstraintViolation<UserBean>> constraintViolations = validator.validate(userBean);
        System.out.println("validate 校驗對象屬性:");
        System.out.println(constraintViolations);
        System.out.println();

        constraintViolations = validator.validateProperty(userBean, "age");
        System.out.println("validateProperty校驗age屬性是否合規(guī):");
        System.out.println(constraintViolations);
        System.out.println();

        constraintViolations = validator.validateValue(UserBean.class , "age", 14 );
        System.out.println("validateValue校驗age屬性的值是否合規(guī):");
        System.out.println(constraintViolations);
    }
}

測試結果:

validate 校驗對象屬性:
[ConstraintViolationImpl{interpolatedMessage='不能為空', propertyPath=username, rootBeanClass=class site.suncodernote.validation.UserBean, messageTemplate='{jakarta.validation.constraints.NotBlank.message}'}, 
ConstraintViolationImpl{interpolatedMessage='最小不能小于18', propertyPath=age, rootBeanClass=class site.suncodernote.validation.UserBean, messageTemplate='{jakarta.validation.constraints.Min.message}'}]

validateProperty校驗age屬性是否合規(guī):
[ConstraintViolationImpl{interpolatedMessage='最小不能小于18', propertyPath=age, rootBeanClass=class site.suncodernote.validation.UserBean, messageTemplate='{jakarta.validation.constraints.Min.message}'}]

validateValue校驗age屬性的值是否合規(guī):
[ConstraintViolationImpl{interpolatedMessage='最小不能小于18', propertyPath=age, rootBeanClass=class site.suncodernote.validation.UserBean, messageTemplate='{jakarta.validation.constraints.Min.message}'}]

從打印結果中可以發(fā)現(xiàn)具體是哪些字段約束不通過、具體的提示信息都有。

不依賴Spring 容器

JSR 303  是一種規(guī)范,意味著它 不依賴Spring 容器 ,能用Java的地方都可以用它,那如果我們在非Spring框架的項目中怎么使用它呢?

其實,最主要的是能獲取到 Validator 接口的實現(xiàn),然后就可以進行驗證了。Validator 接口的實現(xiàn)可以通過如下代碼獲取,前提是要引入 Hibernate Validator 的依賴或者自己重新造輪子實現(xiàn)Validator 接口。

public class ValidationUtils {

    public static Validator getValidator(){
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        return factory.getValidator();
    }
}
/**
 * @author 公眾號-索碼理(suncodernote)
 */
public class ValidatorTest {
    public static void main(String[] args) {
        Validator validator = ValidationUtils.getValidator();

        UserBean userBean = new UserBean();
        userBean.setAge(17);
        userBean.setUsername(null);

        Set<ConstraintViolation<UserBean>> constraintViolations = validator.validate(userBean);
        System.out.println("validate 校驗對象屬性:");
        System.out.println(constraintViolations);
        System.out.println();

        constraintViolations = validator.validateProperty(userBean, "age");
        System.out.println("validateProperty校驗age屬性是否合規(guī):");
        System.out.println(constraintViolations);
        System.out.println();

        constraintViolations = validator.validateValue(UserBean.class , "age", 14 );
        System.out.println("validateValue校驗age屬性的值是否合規(guī):");
        System.out.println(constraintViolations);
    }
}

打印結果:

23:57:10.700 [main] INFO org.hibernate.validator.internal.util.Version -- HV000001: Hibernate Validator 8.0.1.Final
validate 校驗對象屬性:
[ConstraintViolationImpl{interpolatedMessage='最小不能小于18', propertyPath=age, rootBeanClass=class site.suncodernote.validation.UserBean, messageTemplate='{jakarta.validation.constraints.Min.message}'}, 
ConstraintViolationImpl{interpolatedMessage='不能為空', propertyPath=username, rootBeanClass=class site.suncodernote.validation.UserBean, messageTemplate='{jakarta.validation.constraints.NotBlank.message}'}]

validateProperty校驗age屬性是否合規(guī):
[ConstraintViolationImpl{interpolatedMessage='最小不能小于18', propertyPath=age, rootBeanClass=class site.suncodernote.validation.UserBean, messageTemplate='{jakarta.validation.constraints.Min.message}'}]

validateValue校驗age屬性的值是否合規(guī):
[ConstraintViolationImpl{interpolatedMessage='最小不能小于18', propertyPath=age, rootBeanClass=class site.suncodernote.validation.UserBean, messageTemplate='{jakarta.validation.constraints.Min.message}'}]

可以看到 依賴Spring 容器 和 不依賴Spring 容器 ,兩者的調(diào)用結果都是相同的,不同之處就在于 Validator 的獲取,前者直接從 Spring 容器 獲取,后者需要通過工廠類獲取,適用范圍更廣一點,在Spring框架中也能使用。

總結

本文介紹了在非Controller控制層參數(shù)校驗的兩種方法,不管是哪種獲取方法只要能達到結果就行,不過建議使用后者,可以把后者封裝成工具類,統(tǒng)一管理校驗方法。

責任編輯:武曉燕 來源: 索碼理
相關推薦

2019-07-02 10:22:15

TCP流量數(shù)據(jù)

2020-08-31 08:42:21

Node Controller數(shù)據(jù)校驗

2022-08-23 14:51:37

網(wǎng)絡安全領導層存儲

2022-03-10 11:25:51

InnoDB優(yōu)化

2023-09-27 22:44:18

數(shù)據(jù)遷移數(shù)據(jù)庫

2020-11-17 10:23:56

安全黑客網(wǎng)站

2017-10-25 09:50:51

Linux

2021-10-22 14:50:23

Spring BootJava

2020-11-18 14:01:07

設計師產(chǎn)品需求項目

2024-03-14 11:48:44

系統(tǒng)監(jiān)控指標分布式

2016-09-21 10:18:26

阿里Dubbo性能測試

2021-11-10 10:03:18

SpringBootJava代碼

2021-03-11 17:36:51

架構分模塊分層

2025-04-28 08:59:25

2021-03-06 16:16:15

分模塊分層

2020-07-28 08:36:54

數(shù)據(jù)安全數(shù)據(jù)泄露數(shù)據(jù)

2023-07-10 15:35:46

2012-05-24 14:58:55

開源代碼

2015-10-19 10:30:44

物聯(lián)網(wǎng)營銷

2011-07-05 17:05:15

CIO
點贊
收藏

51CTO技術棧公眾號

国产精品成人网| 久久久夜夜夜| 日韩精品一区二区三区四区视频| 97精品国产97久久久久久粉红| 亚洲国产欧美另类| 亚洲一区二区三区免费在线观看| 在线成人激情视频| 无码人妻久久一区二区三区蜜桃| 三级在线观看免费大全| 波多野结衣久久| 91免费国产在线| 欧美黑人xxxx| 人妻精品久久久久中文| 免费一区二区三区在线视频| 欧美日韩中文字幕在线| 成人免费视频视频在| 国产黄色小视频网站| 色狼人综合干| 日韩午夜电影在线观看| 嫩草av久久伊人妇女超级a| 在线观看av免费| 日本一区二区在线不卡| 国产在线精品二区| a网站在线观看| 日本 国产 欧美色综合| 97精品久久久| 欧美日韩一级在线观看| 久久影视一区| 欧美日韩一区二区欧美激情| 欧美国产综合在线| 日本最黄一级片免费在线| 久久久久久亚洲综合影院红桃| 久久久久成人网| 亚洲最大视频网| 日日夜夜亚洲| 欧美在线免费视屏| 亚洲精品9999| 精品亚洲综合| 久久亚洲私人国产精品va媚药| www.成人av| www.香蕉视频| 国产精品一区一区三区| 91精品视频在线播放| 免费一级a毛片| 久久精品女人| 日本精品一区二区三区在线播放视频 | 综合亚洲视频| 久久香蕉频线观| 日本高清不卡免费| 亚州av乱码久久精品蜜桃| 国产精品一二三四五| 成人免费在线视频| 日韩高清av电影| 蜜桃视频在线免费| 久久综合99re88久久爱| 九色91视频| 欧美日韩伦理片| 久久久久久9999| 日韩精品不卡| 粉嫩av在线播放| 亚洲欧美在线aaa| 国产四区在线观看| 爆操欧美美女| 伊人夜夜躁av伊人久久| 国产91久久婷婷一区二区| 日本天堂在线视频| 欧美综合久久| 日韩中文字幕国产| 永久久久久久久| 欧美日韩日本国产亚洲在线| 日韩av在线免费观看| 青青草av网站| 黄色成人在线观看网站| 5858s免费视频成人| 深夜福利网站在线观看| 一区二区三区在线免费看| 精品福利一二区| 97伦伦午夜电影理伦片| 成人一区而且| 久久999免费视频| 成年免费在线观看| 麻豆成人在线观看| 国产经品一区二区| 久热av在线| 亚洲精品五月天| 国产美女网站在线观看| 伊人久久综合一区二区| 欧美精品丝袜中出| 老司机午夜免费福利| 国模吧精品视频| 九色91av视频| 蜜臀尤物一区二区三区直播| 国产在线精品免费| 蜜桃视频在线观看91| 欧美三级理伦电影| 天天射综合影视| 一本二本三本亚洲码| 欧美性受ⅹ╳╳╳黑人a性爽| 欧美国产成人在线| 欧美精品一区二区三区在线四季 | 日韩写真欧美这视频| xxxwww国产| 成人在线国产| 久久免费少妇高潮久久精品99| 成年人视频免费| 成人免费黄色在线| 亚洲人成网站在线播放2019| 啦啦啦中文在线观看日本| 欧洲在线/亚洲| 国产精品九九视频| 亚洲一级淫片| 国产精品美女视频网站| 黄色福利在线观看| 最新不卡av在线| 日韩一级片播放| 精品深夜福利视频| 欧美老肥婆性猛交视频| 欧美三级网站在线观看| 99久久er热在这里只有精品15 | 久99九色视频在线观看| 日韩在线视频不卡| 高清不卡一二三区| 中文字幕欧美日韩一区二区| 最近高清中文在线字幕在线观看1| 88在线观看91蜜桃国自产| 国产黄色网址在线观看| 影音国产精品| 痴汉一区二区三区| xvideos国产在线视频| 欧美色涩在线第一页| 这里只有久久精品| 国产日韩一区二区三区在线| 97久草视频| 国产三区在线观看| 欧美蜜桃一区二区三区| 粉嫩精品久久99综合一区| 久久久国产精品一区二区中文| 国产精品久久久久久久久久久久冷 | 精品一区二区三区中文字幕在线 | 亚洲精品国产精品国自产观看浪潮 | 视频在线精品一区| 免费a级人成a大片在线观看| 91久久香蕉国产日韩欧美9色| 精品1卡二卡三卡四卡老狼| 一区二区三区网站| 91精品视频在线免费观看| 亚洲视频tv| 欧美区在线观看| 97精品在线播放| 亚洲五月婷婷| 国产激情美女久久久久久吹潮| 亚洲无线看天堂av| 日韩一区二区免费在线电影| 欧产日产国产v| 国产精品夜夜爽| 大胆欧美熟妇xx| 国产suv精品一区| 韩剧1988免费观看全集| 五月激情婷婷综合| 日韩欧美国产一区二区| 久久美女免费视频| 蜜臀av国产精品久久久久| 艳色歌舞团一区二区三区| 四虎精品在线观看| 欧美成人在线影院| 波多野结衣毛片| 亚洲国产精品t66y| 99精品视频国产| 黄色日韩精品| 欧美日韩视频在线一区二区观看视频| 亚洲欧洲高清| 在线观看国产精品日韩av| 夜夜嗨av禁果av粉嫩avhd| 亚洲欧美视频一区| 日本一区二区在线观看视频| 国产一区二区三区久久| 日韩三级电影免费观看| 在线日韩三级| 国外成人在线视频| 国产黄在线播放| 91精品在线麻豆| 国产一级做a爱片久久毛片a| 国产欧美日韩综合精品一区二区| 中文字幕成人在线视频| 欧美性色综合| 欧美一区亚洲二区| 国产调教在线| 亚洲一级黄色片| 国产特级黄色片| 懂色av一区二区三区| 日本猛少妇色xxxxx免费网站| 国产精品一二三区在线| 92看片淫黄大片一级| 91精品国产福利在线观看麻豆| 99国产在线观看| 向日葵视频成人app网址| 亚洲高清不卡av| 中文永久免费观看| 亚洲成av人片在线观看| 中文字幕18页| 免费成人美女在线观看.| 日韩精品一区二区免费| japanese国产精品| 激情伦成人综合小说| 免费在线看污片| 国产一区二区三区精品久久久| 亚洲国产欧美另类| 欧美日韩色一区| 毛片毛片女人毛片毛片| 亚洲视频一二区| 中文字幕成人动漫| 99国产精品久久久久久久久久久| 一起操在线视频| 久久精品一区二区国产| www.av91| 亚洲区综合中文字幕日日| 欧美一二三区| 任我爽精品视频在线播放| 97国产超碰| 伊人久久大香线蕉综合影院首页| 日韩美女中文字幕| 忘忧草在线影院两性视频| 欧美国产中文字幕| 菠萝菠萝蜜在线观看| 中文字幕日本欧美| 国产精品一区二区三区四区色| 亚洲成人久久网| 亚洲AV无码精品国产| 91麻豆精品国产91久久久使用方法| 中文在线第一页| 污片在线观看一区二区| 久久黄色小视频| 亚洲欧美经典视频| 久久成人小视频| 久久综合色综合88| 91亚洲一线产区二线产区| 紧缚捆绑精品一区二区| 777一区二区| 久久99精品久久久久久国产越南| 一本久道综合色婷婷五月| 美国成人xxx| 91老司机在线| 国产精品久久久久久久久久辛辛 | 欧美wwwwwww| 秋霞电影一区二区| 天天干天天爽天天射| 奇米影视在线99精品| 91福利国产成人精品播放| 日本不卡视频在线| www欧美激情| 久久99久久99精品免视看婷婷 | 97aⅴ精品视频一二三区| 久久精品aⅴ无码中文字字幕重口| 国产成人在线视频网站| 中文字幕人妻熟女在线| 成人久久久精品乱码一区二区三区| 国产精品久久久久野外| 美女网站色91| 97人人爽人人| 国产电影一区二区三区| 国产精品扒开腿做爽爽爽a片唱戏| www.色精品| 美女被到爽高潮视频| 日本一二三四高清不卡| 亚洲综合视频网站| 一区二区欧美视频| 特一级黄色大片| 欧美日韩在线亚洲一区蜜芽| 一女二男一黄一片| 精品久久久久久无| 欧美亚洲日本| 日韩在线观看免费高清| 在线视频国产区| 91精品国产91久久久久久| 午夜激情成人网| 91麻豆国产精品| 日韩欧美天堂| 一本色道久久综合亚洲二区三区| 91精品推荐| 自慰无码一区二区三区| 日韩主播视频在线| 97超碰人人看| 久久在线免费观看| 日韩三级久久久| 五月天亚洲精品| 一本色道久久综合亚洲| 精品国偷自产国产一区| 国产在线超碰| 欧美激情18p| 97人人做人人爽香蕉精品| 999日本视频| 国产亚洲一区二区三区啪| 特色特色大片在线| 丝瓜av网站精品一区二区 | 少妇久久久久久被弄到高潮| 欧美精品午夜| www.日日操| 成人深夜视频在线观看| 国产精品久久久久久久av| 亚洲黄色小说网站| 特级西西444www大胆免费看| 欧美zozo另类异族| av在线日韩国产精品| 久久久久久久国产精品视频| 欧美va在线观看| 国产一区在线免费观看| 国产精品88久久久久久| 久久9精品区-无套内射无码| 国产一区不卡视频| 在线免费观看视频| 姬川优奈aav一区二区| 国产欧美综合视频| 尤物99国产成人精品视频| 538在线精品| 99re在线播放| 天天色综合色| 国内外成人免费在线视频| 99精品视频在线观看| 欧美卡一卡二卡三| 884aa四虎影成人精品一区| 国产高清视频免费最新在线| 国语对白做受69| 亚洲高清在线一区| 一区二区免费电影| 免费成人在线观看视频| 国产ts在线播放| 欧美丝袜第一区| 婷婷综合激情网| 午夜精品福利电影| 国产精东传媒成人av电影| 最新av网址在线观看| 久草在线在线精品观看| 亚洲一二三精品| 欧美在线影院一区二区| 久久精品a一级国产免视看成人| 韩国精品美女www爽爽爽视频| 欧美日韩黄色| 欧美这里只有精品| 床上的激情91.| 久久久久性色av无码一区二区| 91麻豆精品国产91久久久更新时间| 欧美18一19xxx性| 国产综合视频在线观看| 99久久99久久精品国产片桃花| 一区二区免费av| 亚洲欧美日韩中文字幕一区二区三区| 亚洲自拍偷拍另类| 精品国产一区av| 国产免费av国片精品草莓男男| 50度灰在线观看| 北岛玲一区二区三区四区| 国产无码精品一区二区| 亚洲第一视频网| 性欧美又大又长又硬| 欧洲精品亚洲精品| 麻豆精品一区二区三区| www色aa色aawww| 亚洲福利影片在线| 免费亚洲电影| 亚洲欧美99| 国产伦精品一区二区三区免费 | 亚洲成人中文| 亚洲黄色在线网站| 91成人在线精品| 欧美黑人激情| 成人在线资源网址| 葵司免费一区二区三区四区五区| 摸摸摸bbb毛毛毛片| 欧美福利电影网| 变态调教一区二区三区| 欧美福利精品| 精品在线播放免费| 日韩免费视频网站| 在线精品91av| 日韩国产在线不卡视频| 亚洲自偷自拍熟女另类| 中文字幕 久热精品 视频在线| 国产露脸91国语对白| 韩国日本不卡在线| 日韩精品永久网址| 免费黄色a级片| 九九九伊在人线综合| 欧美激情亚洲一区| 欧美18免费视频| 国产精品一区二区小说| 一区二区三区**美女毛片| 日韩欧美在线观看一区二区| 国产精品视频网| 亚洲区国产区| 91色国产在线| 亚洲激情中文1区| 久久电影视频| 高清国产在线一区| 日韩高清在线不卡| 久草免费新视频| 在线观看国产欧美| 狼人精品一区二区三区在线 | 精品中文字幕一区二区小辣椒| 老妇女50岁三级| 中文字幕不卡在线视频极品|