最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot中利用@Valid和@Validated進行參數(shù)校驗

 更新時間:2024年09月02日 08:58:56   作者:一只小白()  
為了保證數(shù)據(jù)的正確性、完整性,前后端都需要進行數(shù)據(jù)檢驗,作為一名后端開發(fā)工程師,不能僅僅依靠前端來校驗數(shù)據(jù),我們還需要對接口請求的參數(shù)進行后端的校驗,所以本文給大家介紹了SpringBoot中利用@Valid和@Validated進行參數(shù)校驗,需要的朋友可以參考下

一、什么是參數(shù)校驗

例如在某個登錄請求中傳遞參數(shù)包含用戶信息,需要判斷用戶信息是否為空,以及判斷郵箱是否為空等情況,正常處理會寫大量的If else 語句非常影響美觀,可讀性也非常低,因此提出了參數(shù)校驗這個概念,也就是下文介紹的@Valid和@Validated注解

@Controller
@RequestMapping("/user")
public class UserControlelr {
    @PostMapping("/login")
    public String login(UserDTO userDTO){
        if (userDTO.getUsername() == null || userDTO.getUsername().isEmpty()){
            // 進行某種操作
        }
        if(userDTO.getEmail() == null || userDTO.getEmail().isEmpty()){
            // 進行某種操作
        }
        return "loginSuccess";
    }
}

二、@Valid和@Validated注解的異同

標注位置

  • @Validated : 用在類、方法和方法參數(shù)上,但不能用于成員屬性。
  • @Valid:可以用在方法、構造函數(shù)、方法參數(shù)和成員屬性上。

分組校驗

  • @Validated :支持分組驗證,可以更細致地控制驗證過程。
  • @Valid:主要支持標準的Bean驗證功能,不支持分組驗證。

嵌套校驗

  • @Validated :不支持嵌套驗證。
  • @Valid:支持嵌套驗證,可以嵌套驗證對象內(nèi)部的屬性。

三、常用校驗注解

注解校驗作用
@NotBlank用在String 上面,一般用來校驗String類型不能為空,而且調(diào)用trim()后,長度必須大于0。
@NotEmpty用在集合上面,一般用來校驗List類型(不能注釋枚舉),而且長度必須大于0
@NotNull驗證字段不為 null。一般用于數(shù)字類型。
@Min(value)限制必須為一個不小于指定值的數(shù)字
@Max(value)限制必須為一個不大于指定值的數(shù)字
@past限制元素(日期類型)必須是一個過去的日期
@Future限制元素(日期類型)必須是一個將來的日期
@Email限制的元素值為是電子郵件地址
@Patern(value)限制必須符合指定的正則表達式

四、如何使用

1、普通參數(shù)校驗

即直接檢驗像String、Interger這些普通參數(shù)

注意,要在controller上加入@Validated注解才能生效

@RestController
@Validated
public class Test1Controller {

    @PostMapping("/test1")
    public String test1(@NotEmpty String username, @Max(5) Integer value){
        return "校驗普通參數(shù)";
    }

在Apifox上測試,會顯示錯誤信息

在這里插入圖片描述

2、對象參數(shù)校驗

UserDTO.java

@Data
public class UserDTO {
    /**
     * 用戶名
     */
    @NotBlank
    private String username;

    /**
     * 密碼
     */
    @NotBlank
    private String pasword;

    /**
     * 郵箱
     */
    @Email
    private String email;
}

在參數(shù)的DTO上加入@Valid和@Validated效果是一樣的

@RestController
public class Test2Controller {
    @PostMapping("/test2")
    public String test2(@Valid @RequestBody UserDTO userDTO){
        return "對象參數(shù)驗證";
    }
}

在Apifox上測試,會顯示錯誤信息

在這里插入圖片描述

3、集合參數(shù)校驗

注意,要在controller上加入@Validated注解才能生效

@RestController
@Validated
public class Test3Controller {
    @PostMapping("/test3")
    public String test3(@Valid @RequestBody List<UserDTO> userDTOList){
        return "集合參數(shù)校驗";
    }
}

在Apifox上測試,會顯示具體第幾個變量的哪幾個參數(shù)有錯誤

在這里插入圖片描述

4、嵌套校驗

UserListDTO.java

@Data
public class UserListDTO {
    /**
     * List的name
     */
    @NotBlank
    private String listName;

    /**
     *  User列表
     */
    @Valid
    private List<UserDTO> userDTOList;
}
@RestController
public class Test4Controller {
    @PostMapping("/test4")
    public String test4(@Validated @RequestBody UserListDTO userListDTO){
        return "嵌套參數(shù)校驗";
    }
}

在Apifox上測試,會顯示具體第幾個變量的哪幾個參數(shù)有錯誤

在這里插入圖片描述

以上就是SpringBoot中利用@Valid和@Validated進行參數(shù)校驗的詳細內(nèi)容,更多關于SpringBoot @Valid和@Validated參數(shù)校驗的資料請關注腳本之家其它相關文章!

相關文章

  • Java中NoClassDefFoundError異常的原因及解決方法

    Java中NoClassDefFoundError異常的原因及解決方法

    在 Java 開發(fā)中,java.lang.NoClassDefFoundError 是運行時異常中最常見的問題之一,它通常出現(xiàn)在程序編譯成功后,卻在運行時因 JVM 無法找到某個類的定義 而拋出,本文給大家介紹了Java中NoClassDefFoundError異常的原因及解決方法,需要的朋友可以參考下
    2025-05-05
  • Java中的CAS(Compare-And-Swap)操作示例詳解

    Java中的CAS(Compare-And-Swap)操作示例詳解

    CAS是一種原子操作,用于在多線程環(huán)境中實現(xiàn)無鎖(lock-free)的線程安全編程,下面通過本文給大家介紹Java中的CAS(Compare-And-Swap)操作示例詳解,感興趣的朋友一起看看吧
    2025-06-06
  • SpringBatch簡單入門案例

    SpringBatch簡單入門案例

    文章介紹了SpringBatch批處理框架的使用,包括其基本概念、優(yōu)勢、架構以及入門案例,通過簡單的任務和數(shù)據(jù)庫連接配置,展示了如何使用SpringBatch進行基本的批處理操作,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • Java內(nèi)部類的實現(xiàn)原理與可能的內(nèi)存泄漏說明

    Java內(nèi)部類的實現(xiàn)原理與可能的內(nèi)存泄漏說明

    這篇文章主要介紹了Java內(nèi)部類的實現(xiàn)原理與可能的內(nèi)存泄漏說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • JAVA對象分析之偏向鎖、輕量級鎖、重量級鎖升級過程

    JAVA對象分析之偏向鎖、輕量級鎖、重量級鎖升級過程

    這篇文章主要介紹了JAVA對象分析之偏向鎖、輕量級鎖、重量級鎖升級過程,又對這方面感興趣的同學可以跟著一起研究下
    2021-02-02
  • Java中的Future獲取任務返回值詳解

    Java中的Future獲取任務返回值詳解

    這篇文章主要介紹了Java中的Future獲取任務返回值詳解,在向線程池ThreadPoolExecutor提交任務時,一般為了方便操作采用execute提交任務,這時線程其實是無返回值的,需要的朋友可以參考下
    2023-12-12
  • Spring-AOP @AspectJ切點函數(shù)之@annotation()用法

    Spring-AOP @AspectJ切點函數(shù)之@annotation()用法

    這篇文章主要介紹了Spring-AOP @AspectJ切點函數(shù)之@annotation()用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java監(jiān)聽POST請求的示例詳解

    Java監(jiān)聽POST請求的示例詳解

    要監(jiān)聽POST請求,我們可以使用Java中的HttpServlet類,以下是一個使用Servlet API監(jiān)聽POST請求的完整示例,通過代碼示例講解的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2024-12-12
  • java不同線程解讀以及線程池的使用方式

    java不同線程解讀以及線程池的使用方式

    這篇文章主要介紹了java不同線程解讀以及線程池的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢操作

    Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢操作

    Nebula?Graph?是一款開源的、分布式的、易擴展的原生圖數(shù)據(jù)庫,能夠承載包含數(shù)千億個點和數(shù)萬億條邊的超大規(guī)模數(shù)據(jù)集,并且提供毫秒級查詢,這篇文章主要介紹了Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢,需要的朋友可以參考下
    2022-10-10

最新評論

曲沃县| 玛多县| 寿光市| 长治县| 嘉鱼县| 杭州市| 潞西市| 井陉县| 浏阳市| 策勒县| 休宁县| 新野县| 晋宁县| 门头沟区| 永春县| 舞钢市| 白朗县| 兴安县| 浦北县| 江都市| 五常市| 河间市| 阳原县| 阿图什市| 满洲里市| 五大连池市| 屏边| 清涧县| 武汉市| 江孜县| 济源市| 黔南| 仪陇县| 黔南| 霞浦县| 五莲县| 龙江县| 安达市| 彰化县| 周宁县| 漳平市|