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

SpringBoot使用@NotEmpty、@NotBlank、@NotNull注解進(jìn)行參數(shù)校驗(yàn)

 更新時(shí)間:2024年08月18日 14:42:51   作者:CodeDunkster  
我們經(jīng)常需要對(duì)請(qǐng)求參數(shù)進(jìn)行校驗(yàn),本文主要介紹了SpringBoot使用@NotEmpty、@NotBlank、@NotNull注解進(jìn)行參數(shù)校驗(yàn),具有一定的參考價(jià)值,感興趣的可以了解一下

在 Spring Boot 項(xiàng)目中,我們經(jīng)常需要對(duì)請(qǐng)求參數(shù)進(jìn)行校驗(yàn),以確保其符合預(yù)期的格式和內(nèi)容。Spring 提供了一些注解來(lái)簡(jiǎn)化參數(shù)校驗(yàn)的工作,其中包括 @NotEmpty、@NotBlank 和 @NotNull。在本文中,我們將學(xué)習(xí)如何使用這些注解來(lái)進(jìn)行參數(shù)校驗(yàn),并解釋為什么要使用它們。

1. 導(dǎo)入依賴(lài)

首先,在 pom.xml 文件中添加以下 Maven 依賴(lài):

xmlCopy code
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

這將導(dǎo)入 Spring Boot 提供的參數(shù)校驗(yàn)功能所需的依賴(lài)。

2. 使用 @NotEmpty、@NotBlank、@NotNull

  • @NotEmpty:用于檢查集合或數(shù)組等對(duì)象是否為 null 或空。該注解通常用于檢查字符串是否為空,集合是否為空等情況。
  • @NotBlank:用于檢查字符串是否不為空,并且去除首尾空格后長(zhǎng)度大于 0。該注解通常用于檢查用戶(hù)輸入的字符串是否為有效值。
  • @NotNull:用于檢查對(duì)象(包裝類(lèi):Integer、Boolean等)是否不為 null。該注解通常用于檢查對(duì)象是否已經(jīng)被初始化。

3. 增加 @Validated 注解

為了讓參數(shù)校驗(yàn)注解生效,我們需要在 Controller 或 Service 類(lèi)上添加 @Validated 注解。

4. 示例

假設(shè)我們有一個(gè)簡(jiǎn)單的 Controller 處理器,用于接收用戶(hù)的注冊(cè)請(qǐng)求,并需要對(duì)用戶(hù)名和密碼進(jìn)行校驗(yàn):

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Validated
public class UserController {

    @PostMapping("/register")
    public String registerUser(@Valid @RequestBody UserDTO userDTO) {
        // 處理用戶(hù)注冊(cè)邏輯
        return "User registered successfully!";
    }

    public static class UserDTO {
        @NotBlank(message = "用戶(hù)名不能為空")
        private String username;

        @NotBlank(message = "密碼不能為空")
        private String password;

        // 省略 getter 和 setter 方法
    }
}

在上面的示例中,我們定義了一個(gè) UserDTO 類(lèi)用于接收用戶(hù)注冊(cè)的請(qǐng)求參數(shù)。通過(guò)在 username 和 password 字段上添加 @NotBlank 注解,我們要求這兩個(gè)字段不能為空,并且不允許只包含空格。同時(shí),在 UserController 類(lèi)上添加了 @Validated 注解,以確保參數(shù)校驗(yàn)生效。

5. 為什么使用 @NotEmpty、@NotBlank、@NotNull

  • 提高代碼健壯性:通過(guò)對(duì)參數(shù)進(jìn)行校驗(yàn),可以有效地防止空指針異?;驘o(wú)效輸入帶來(lái)的問(wèn)題,提高系統(tǒng)的穩(wěn)定性和安全性。
  • 提升開(kāi)發(fā)效率:使用這些注解可以減少手動(dòng)編寫(xiě)參數(shù)校驗(yàn)邏輯的工作量,提高開(kāi)發(fā)效率,同時(shí)使代碼更加清晰易讀。
  • 統(tǒng)一規(guī)范:采用注解方式進(jìn)行參數(shù)校驗(yàn)可以使代碼規(guī)范化,降低維護(hù)成本,并且有利于團(tuán)隊(duì)間的協(xié)作與交流。

6.全局異常處理器

在 Spring Boot 中,如果參數(shù)校驗(yàn)失敗,將會(huì)拋出 MethodArgumentNotValidException 異?;?nbsp;ConstraintViolationException 異常。為了統(tǒng)一處理這些異常,可以定義一個(gè)全局異常處理器。

下面是一個(gè)簡(jiǎn)單的全局異常處理器示例:

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.MethodArgumentNotValidException;

@ControllerAdvice
public class GlobalExceptionHandler {

	@ExceptionHandler(MethodArgumentNotValidException.class)
	public ResponseEntity<String> handleValidationExceptions(MethodArgumentNotValidException ex) {
    return new ResponseEntity<>("Invalid request: " + ex.getMessage(), HttpStatus.BAD_REQUEST);
  }

// 可以添加其他異常處理方法
}

在上面的示例中,handleValidationExceptions 方法用于處理參數(shù)校驗(yàn)異常 MethodArgumentNotValidException,并返回一個(gè)包含錯(cuò)誤信息的 ResponseEntity 對(duì)象。

通過(guò)定義全局異常處理器,可以集中處理所有控制器中拋出的參數(shù)校驗(yàn)異常,并向客戶(hù)端返回統(tǒng)一的錯(cuò)誤信息,提高了代碼的可維護(hù)性和可重用性。

總結(jié)

在 Spring Boot 中使用參數(shù)校驗(yàn)注解可以方便地對(duì)用戶(hù)傳入的參數(shù)進(jìn)行校驗(yàn),保證數(shù)據(jù)的有效性和安全性。同時(shí),通過(guò)定義全局異常處理器,可以統(tǒng)一處理所有的參數(shù)校驗(yàn)異常,提高了代碼的健壯性和可維護(hù)性。

到此這篇關(guān)于SpringBoot使用@NotEmpty、@NotBlank、@NotNull注解進(jìn)行參數(shù)校驗(yàn)的文章就介紹到這了,更多相關(guān)SpringBoot注解參數(shù)校驗(yàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Resty開(kāi)發(fā)restful版本的Jfinal深入研究

    Resty開(kāi)發(fā)restful版本的Jfinal深入研究

    這篇文章主要為大家介紹了Resty開(kāi)發(fā)restful版本的Jfinal深入研究有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • java自定義ClassLoader加載指定的class文件操作

    java自定義ClassLoader加載指定的class文件操作

    這篇文章主要介紹了java自定義ClassLoader加載指定的class文件操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Java中的NoClassDefFoundError報(bào)錯(cuò)含義解析

    Java中的NoClassDefFoundError報(bào)錯(cuò)含義解析

    這篇文章主要為大家介紹了Java中的NoClassDefFoundError含義詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-11-11
  • 2020年IntelliJ IDEA最新最詳細(xì)配置圖文教程詳解

    2020年IntelliJ IDEA最新最詳細(xì)配置圖文教程詳解

    這篇文章主要介紹了2020年IntelliJ IDEA最新最詳細(xì)配置圖文教程詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Java類(lèi)加載器ClassLoader用法解析

    Java類(lèi)加載器ClassLoader用法解析

    這篇文章主要介紹了Java類(lèi)加載器ClassLoader用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java中static變量作用和用法詳解

    Java中static變量作用和用法詳解

    Java 中被 static 修飾的成員稱(chēng)為靜態(tài)成員或類(lèi)成員。它屬于整個(gè)類(lèi)所有,而不是某個(gè)對(duì)象所有,即被類(lèi)的所有對(duì)象所共享。靜態(tài)成員可以使用類(lèi)名直接訪問(wèn),也可以使用對(duì)象名進(jìn)行訪問(wèn).下面我們來(lái)詳細(xì)了解一下吧
    2019-06-06
  • Spring?Boot中@Validated注解不生效問(wèn)題匯總大全

    Spring?Boot中@Validated注解不生效問(wèn)題匯總大全

    這篇文章主要給大家介紹了關(guān)于Spring?Boot中@Validated注解不生效問(wèn)題匯總的相關(guān)資料,@Validated注解是Spring框架中的一個(gè)注解,用于在方法參數(shù)上添加參數(shù)校驗(yàn)規(guī)則,需要的朋友可以參考下
    2023-07-07
  • mybatis plus CU自動(dòng)填充 和 軟刪除自動(dòng)填充的實(shí)現(xiàn)方法

    mybatis plus CU自動(dòng)填充 和 軟刪除自動(dòng)填充的實(shí)現(xiàn)方法

    這篇文章主要介紹了mybatis plus CU自動(dòng)填充 和 軟刪除自動(dòng)填充的實(shí)現(xiàn)方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • java實(shí)現(xiàn)菜單滑動(dòng)效果

    java實(shí)現(xiàn)菜單滑動(dòng)效果

    這篇文章主要介紹了java實(shí)現(xiàn)菜單滑動(dòng)效果,效果非常棒,這里推薦給大家,有需要的小伙伴可以參考下。
    2015-03-03
  • java常見(jiàn)報(bào)錯(cuò)及解決方案總結(jié)

    java常見(jiàn)報(bào)錯(cuò)及解決方案總結(jié)

    這篇文章主要介紹了Java編程中常見(jiàn)錯(cuò)誤類(lèi)型及示例,包括語(yǔ)法錯(cuò)誤、空指針異常、數(shù)組下標(biāo)越界、類(lèi)型轉(zhuǎn)換異常、文件未找到異常、除以零異常、非法線程操作異常、方法未定義異常、死鎖和類(lèi)未找到異常,文中通過(guò)代碼將解決方案介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03

最新評(píng)論

金堂县| 灯塔市| 东海县| 伊春市| 郎溪县| 民丰县| 津市市| 崇阳县| 应城市| 罗甸县| 星座| 航空| 白银市| 六枝特区| 青海省| 南郑县| 冷水江市| 新宁县| 台北县| 尼玛县| 富锦市| 海南省| 大兴区| 本溪| 大余县| 通州市| 天全县| 惠州市| 呼图壁县| 青神县| 平山县| 和林格尔县| 洛宁县| 双辽市| 九台市| 叶城县| 东乡| 婺源县| 迁安市| 万盛区| 乐业县|