javascript
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 - 优雅的实现【参数分组校验】高级进阶的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot - 优雅的实现【自
- 下一篇: SpringBoot - 优雅的实现【业