欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring?Boot常用的參數(shù)驗證技巧和使用方法

 更新時間:2023年09月11日 14:49:00   作者:曾幾何時…  
Spring Boot是一個使用Java編寫的開源框架,用于快速構建基于Spring的應用程序,這篇文章主要介紹了Spring?Boot常用的參數(shù)驗證技巧和使用方法,需要的朋友可以參考下

簡介

Spring Boot是一個使用Java編寫的開源框架,用于快速構建基于Spring的應用程序。在實際開發(fā)中,經常需要對輸入?yún)?shù)進行驗證,以確保數(shù)據(jù)的完整性和準確性。Spring Boot提供了多種方式來進行參數(shù)驗證,并且可以很方便地集成到應用程序中。

1. 使用JSR-303注解進行參數(shù)驗證

JSR-303是Java Validation API的規(guī)范之一,它定義了一套用于參數(shù)驗證的注解。Spring Boot支持使用這些注解來驗證方法參數(shù)、請求參數(shù)和實體類字段等。

@RestController
public class UserController {
    @PostMapping("/user")
    public ResponseEntity<String> createUser(@Valid @RequestBody UserRequest request) {
        // 處理請求
        return ResponseEntity.ok("User created successfully");
    }
}

在上面的例子中, @Valid 注解用于標記需要驗證的參數(shù), @RequestBody 注解用于指定該參數(shù)為請求體。而 UserRequest 則是一個自定義的實體類,使用了JSR-303注解來驗證字段。

public class UserRequest {
    @NotBlank(message = "用戶名不能為空")
    private String username;
    @Size(min = 6, max = 12, message = "密碼長度必須在6到12個字符之間")
    private String password;
    // getter 和 setter 方法省略
}

UserRequest 類中,我們使用了 @NotBlank 注解來驗證 username 字段不能為空,使用了 @Size 注解來驗證 password 字段的長度在6到12個字符之間。當參數(shù)驗證失敗時,框架會自動拋出 MethodArgumentNotValidException 異常,并返回相應的錯誤信息。

2. 使用自定義驗證器

除了使用JSR-303注解外,你還可以編寫自己的參數(shù)驗證器。這對于一些特殊的驗證需求,或者需要復雜邏輯的驗證場景非常有用。

@Component
public class AgeValidator implements ConstraintValidator<ValidAge, Integer> {
    @Override
    public boolean isValid(Integer age, ConstraintValidatorContext context) {
        // 實現(xiàn)自定義的驗證邏輯
        return age >= 18 && age <= 60;
    }
}

首先,我們需要編寫一個實現(xiàn)了 ConstraintValidator 接口的驗證器類。在上面的例子中,我們定義了一個 AgeValidator 類,用于驗證年齡是否在合法范圍內(18到60歲)。然后,我們需要在需要驗證的地方使用 @ValidAge 注解來標記需要驗證的參數(shù)。

@RestController
public class UserController {
    @PostMapping("/user")
    public ResponseEntity<String> createUser(@ValidAge @RequestParam("age") Integer age) {
        // 處理請求
        return ResponseEntity.ok("User created successfully");
    }
}

在上述代碼中,我們使用了 @ValidAge 注解來驗證 age 參數(shù)的合法性。當參數(shù)驗證失敗時,框架會自動拋出 MethodArgumentNotValidException 異常,并返回相應的錯誤信息。

3. 自定義驗證錯誤處理

除了使用框架提供的默認錯誤處理方式外,你還可以定制化錯誤處理??梢酝ㄟ^編寫全局異常處理器來對參數(shù)驗證失敗時的異常進行捕獲和處理。

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity<String> handleMethodArgumentNotValid(MethodArgumentNotValidException ex) {
        BindingResult result = ex.getBindingResult();
        List<ObjectError> errors = result.getAllErrors();
        StringBuilder errorMessage = new StringBuilder();
        for (ObjectError error : errors) {
            errorMessage.append(error.getDefaultMessage()).append("; ");
        }
        return ResponseEntity.badRequest().body(errorMessage.toString());
    }
}

在上述代碼中,我們使用 @ControllerAdvice 注解將該類聲明為全局異常處理器,并使用 @ExceptionHandler 注解來指定處理 MethodArgumentNotValidException 異常。當參數(shù)驗證失敗時,會自動進入到這個處理方法中,我們可以從異常對象中獲取詳細的錯誤信息并進行處理。

結論

Spring Boot提供了多種靈活且強大的參數(shù)驗證技巧和使用方法,包括使用JSR-303注解進行參數(shù)驗證、自定義驗證器以及自定義驗證錯誤處理等。通過合理地運用這些技巧,我們可以保證應用程序接收到正確且完整的參數(shù)輸入,提高系統(tǒng)的穩(wěn)定性和安全性。

到此這篇關于Spring Boot常用的參數(shù)驗證技巧和使用方法的文章就介紹到這了,更多相關Spring Boot參數(shù)驗證內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解Idea SpringBoot搭建SpringCloud的準備工作(推薦)

    詳解Idea SpringBoot搭建SpringCloud的準備工作(推薦)

    這篇文章主要介紹了Idea SpringBoot搭建SpringCloud的準備工作(推薦),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • MyBatis中不建議使用where?1=1原因詳解

    MyBatis中不建議使用where?1=1原因詳解

    這篇文章主要為大家介紹了MyBatis中不建議使用where?1=1的原因詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Java實現(xiàn)讀取resources目錄下的文件路徑的九種方式

    Java實現(xiàn)讀取resources目錄下的文件路徑的九種方式

    本文主要介紹了Java實現(xiàn)讀取resources目錄下的文件路徑的九種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • Spring中的refreshContext源碼分析

    Spring中的refreshContext源碼分析

    這篇文章主要介紹了Spring中的refreshContext源碼分析,在SpringBoot啟動流程中,主要的兩個階段是初始化SpringApplication對象以及SpringApplication.run方法執(zhí)行的內容,今天主要細講的是SpringApplication.run中的刷新容器refreshContext方法,需要的朋友可以參考下
    2023-12-12
  • MyBatis-Flex BaseMapper的接口基本用法小結

    MyBatis-Flex BaseMapper的接口基本用法小結

    本文主要介紹了MyBatis-Flex BaseMapper的接口基本用法小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-02-02
  • JavaSE圖像驗證碼簡單識別程序詳解

    JavaSE圖像驗證碼簡單識別程序詳解

    這篇文章主要為大家詳細介紹了JavaSE圖像驗證碼簡單識別程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 一文詳解Java過濾器攔截器實例逐步掌握

    一文詳解Java過濾器攔截器實例逐步掌握

    這篇文章主要為大家介紹了Java過濾器攔截器實例詳解逐步掌握,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • SpringBoot中短時間連續(xù)請求時出現(xiàn)Cookie獲取異常問題的解決方案

    SpringBoot中短時間連續(xù)請求時出現(xiàn)Cookie獲取異常問題的解決方案

    在 Spring Boot Web 應用中,每個請求都會攜帶 HttpServletRequest,其中包含 Cookie 等關鍵信息,如果某個請求對象的 cookieParsed 標記在異步線程中被錯誤修改,可能會導致 短時間內的后續(xù)請求無法正確解析 Cookie,本文給大家介紹了詳細解決方法,需要的朋友可以參考下
    2025-04-04
  • java8中Map的一些騷操作總結

    java8中Map的一些騷操作總結

    這篇文章主要給大家介紹了關于java8中Map的一些騷操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • MyBatis Plus工具快速入門使用教程

    MyBatis Plus工具快速入門使用教程

    這篇文章主要介紹了MyBatis Plus工具快速入門使用教程,需要的朋友可以參考下
    2018-05-05

最新評論