日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot - 优雅的实现【参数分组校验】高级进阶

發布時間:2025/3/21 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot - 优雅的实现【参数分组校验】高级进阶 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • Pre
  • 需求
  • 實現三部曲
    • Step1 定義分組接口
    • Step2 給參數分配分組
    • Step3 指定分組
    • Step4 驗證
  • 源碼


Pre

SpringBoot - 優雅的實現【參數校驗】高級進階

SpringBoot - 優雅的實現【自定義參數校驗】高級進階

SpringBoot - 優雅的實現【參數分組校驗】高級進階


需求

我們經常會碰到這樣的一個場景: 新增的時候某些字段為必填(比如密碼), 更新的時候非必填。


實現三部曲

Validator校驗框架提供了分組校驗,可以幫助我們快速的實現這樣的需求。

Step1 定義分組接口

import javax.validation.groups.Default;/*** @author 小工匠* @version 1.0* @description: TODO* @date 2022/2/21 23:03* @mark: show me the code , change the world*/public interface CustomValidateGroup extends Default {interface Crud extends CustomValidateGroup {interface Create extends Crud {}interface Update extends Crud {}interface Query extends Crud {}interface Delete extends Crud {}} }

定義一個分組接口CustomValidateGroup 讓其繼承javax.validation.groups.Default,再在分組接口中定義出多個不同的操作類型,Create,Update,Query,Delete.


Step2 給參數分配分組

@Length(min = 8, max = 12, message = "password長度必須位于8到12之間")@NotNull(groups = CustomValidateGroup.Crud.Create.class,message = "新增接口密碼不能為空")@Null(groups = CustomValidateGroup.Crud.Update.class)private String password;

Step3 指定分組

給需要參數校驗的方法指定分組

/*** 新增的時候 不能為空* @param artisan* @return*/@PostMapping(value = "/add")public String add(@Validated(value = CustomValidateGroup.Crud.Create.class) Artisan artisan){log.info("InComing Param is {}", artisan);return "add valid success";}/*** 更新的時候 可以為空* @param artisan* @return*/@PostMapping(value = "/update")public String update(@Validated(value = CustomValidateGroup.Crud.Update.class) Artisan artisan){log.info("InComing Param is {}", artisan);return "update valid success";}

通過value屬性給add()和update()方法分別指定Create和Update分組


Step4 驗證

新增,期望 密碼不能為空 ,我們填個空試試

【修改】

對于未指定分組的則使用的是默認分組 。 比如由于email屬于默認分組,而我們的分組接口CustomValidateGroup已經繼承了Default分組,所以也是可以對email字段作參數校驗的

如果CustomValidateGroup沒有繼承Default分組,那在代碼屬性上就需要加上@Validated(value = {ValidGroup.Crud.Create.class, Default.class}才能讓email字段的校驗生效。


源碼

https://github.com/yangshangwei/boot2

總結

以上是生活随笔為你收集整理的SpringBoot - 优雅的实现【参数分组校验】高级进阶的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。