SpringBoot使用@Validated處理校驗(yàn)的方法步驟
前言
@Validated 注解的主要目的是啟用和利用 Spring 的驗(yàn)證框架,它可以用于類上也可以用于方法參數(shù)上。用于類上時(shí),表示該類中的所有方法參數(shù)都需要通過驗(yàn)證框架進(jìn)行驗(yàn)證;用于方法參數(shù)上時(shí),則僅表示該參數(shù)需要被驗(yàn)證。選擇哪種方式取決于具體的業(yè)務(wù)需求和個(gè)人偏好。
步驟
1、引入依賴,這是 Spring 用來實(shí)現(xiàn)數(shù)據(jù)驗(yàn)證的基礎(chǔ)庫
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2、然后我們將注解@Validated放在類上開啟驗(yàn)證功能,將注解@Valid放在參數(shù)實(shí)體上代表對實(shí)體進(jìn)行校驗(yàn),例如
@RestController
@RequestMapping("/test")
@Validated
public class TestController {
@PostMapping()
public R test(@Valid @RequestBody TestDTO dto){
return R.ok("響應(yīng)成功");
}
}
3、然后我們在請求體中隨時(shí)用如下 注解即可通過框架自動(dòng)進(jìn)行驗(yàn)證,我這里是使用統(tǒng)一異常捕捉進(jìn)行全局異常情況攔截,有關(guān)統(tǒng)一異常封裝,大家可以關(guān)注我看我另一篇文章。
統(tǒng)一的參數(shù)異常捕捉
/**
*處理參數(shù)校驗(yàn)異常
* @param e
* @return
*/
@ExceptionHandler
public R handlerException(MethodArgumentNotValidException e) {
e.printStackTrace();
BindingResult bindingResult = e.getBindingResult();
return R.fail(bindingResult.getFieldErrors().get(0).getDefaultMessage());
}
參數(shù)實(shí)體
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Data
public class TestDTO {
@NotBlank(message = "a參數(shù)不能為空")
private String a;
@NotNull(message = "b參數(shù)不能為null")
private String b;
@Max(value = 10,message = "請輸入正確的范圍")
private Integer c;
}
4、通過apifox工具調(diào)用測試結(jié)果如下



5、以下是常用的注解說明
| 注解 | 類型 | 說明 |
|---|---|---|
| @Null | Object | 校驗(yàn)必須為null |
| @NotNull | Object | 校驗(yàn)必須不能是null,并且必須有一個(gè)非空格字符 |
| @NotEmpty | 字符串、集合、映射等類型 | 值不為空(即不為 null 且不為空字符串、空集合或空映射)。 |
| @AssertTrue | boolean、Boolean | 參數(shù)需要為true,傳null允許通過,注意,當(dāng)傳了0時(shí)會(huì)認(rèn)為是false不通過 |
| @AssertFalse | boolean、Boolean | 參數(shù)需要為true,傳null允許通過,注意,當(dāng)傳了0時(shí)會(huì)認(rèn)為是false允許通過 |
| @Max | BigDecimal、BigInteger,基本數(shù)字類型及其包裝類等 | 允許的最大值,null允許通過 |
| @Min | BigDecimal、BigInteger,基本數(shù)字類型及其包裝類等 | 允許的最小值,null允許通過 |
| @Negative | BigDecimal、BigInteger,基本數(shù)字類型及其包裝類等 | 數(shù)字類型的值必須小于零,null允許通過 |
| @Negative | BigDecimal、BigInteger,基本數(shù)字類型及其包裝類等 | 數(shù)字類型的值必須小于等于零,null允許通過 |
| @Positive | BigDecimal、BigInteger,基本數(shù)字類型及其包裝類等 | 數(shù)字類型的值必須大于零,null允許通過 |
| @PositiveOrZero | BigDecimal、BigInteger,基本數(shù)字類型及其包裝類等 | 數(shù)字類型的值必須大于等于零,null允許通過 |
| @Digits(integer = 10, fraction = 2) | 字符串、BigDecimal、BigInteger,基本數(shù)字類型及其包裝類等 | 整數(shù)位數(shù)和小數(shù)位數(shù)限制,null允許通過 |
| @Pattern | 字符串 | 正則表達(dá)式匹配,null允許通過 |
| @Email字符串 | 字符串 | 郵箱格式校驗(yàn),null允許通過 |
| @Size | 字符串、集合、映射等類 | 校驗(yàn)大小的范圍,null允許通過,如 @Size(min = 1, max = 3, message = “最大范圍為1-3”) |
到此這篇關(guān)于SpringBoot使用@Validated處理校驗(yàn)的方法步驟的文章就介紹到這了,更多相關(guān)SpringBoot @Validated處理校驗(yàn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java如何設(shè)置系統(tǒng)參數(shù)和運(yùn)行參數(shù)
這篇文章主要介紹了Java如何設(shè)置系統(tǒng)參數(shù)和運(yùn)行參數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
基于SpringBoot實(shí)現(xiàn)定時(shí)發(fā)送郵件過程解析
這篇文章主要介紹了基于SpringBoot實(shí)現(xiàn)定時(shí)發(fā)送郵件過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
SpringBoot如何使用MyBatis-Plus實(shí)現(xiàn)高效的數(shù)據(jù)訪問層
在開發(fā) Spring Boot 應(yīng)用時(shí),數(shù)據(jù)訪問是不可或缺的部分,本文將詳細(xì)介紹如何在 Spring Boot 中使用 MyBatis-Plus,并結(jié)合具體代碼示例來講解它的使用方法和常見配置,希望對大家有一定的幫助2025-04-04
Java如何基于command調(diào)用openssl生成私鑰證書
這篇文章主要介紹了Java如何基于command調(diào)用openssl生成私鑰證書,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Java?jdk升級版本注意事項(xiàng)經(jīng)驗(yàn)分享
這篇文章主要介紹了Java?jdk升級版本注意事項(xiàng)的相關(guān)資料,涉及兼容性風(fēng)險(xiǎn)、JVM與GC機(jī)制變更、運(yùn)維與環(huán)境配置風(fēng)險(xiǎn)等多方面內(nèi)容,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-02-02
[Java]詳解Socket和ServerSocket學(xué)習(xí)筆記
即時(shí)類應(yīng)用或者即時(shí)類的游戲,HTTP協(xié)議很多時(shí)候無法滿足于我們的需求,這會(huì),Socket對于我們來說就非常實(shí)用了。本篇文章主要介紹了Socket和ServerSocket,有興趣的可以了解一下。2016-12-12

