当前位置: 首页 > news >正文

SpringValidation自定义注解以及分组校验

SpringValidation的参数校验使用可参考:【SpringMVC应用篇】Spring Validation 参数校验-CSDN博客

目录

1. 引入依赖

2. 自定义注解校验

2.1 创建Validation类

2.2 创建注解对象

2.3 使用注解

3. 分组校验

3.1 实体类内部定义接口

3.2 在参数上指定分组


1. 引入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>3.2.0</version>
</dependency>

2. 自定义注解校验

使用场景:已有的注解不能满足所有的校验需求,特殊的情况需要自定义校验(自定义校验注解)。 实现自定义注解可以通过模仿,SpringValidation提供的其他注解进行改写。

举例说明:

我有一个实体类,其中一个参数state需要接收到前端数据后进行校验(要求该参数只能是 已发布 或者 草稿)。而SpringValidation提供的注解无法满足我的需求,此时便需要自定义注解。

2.1 创建Validation类

注意:该类需要实现 ConstraintValidator接口,并实现 isValid( )方法。方法内即是校验规则, 我这里只是提供参考。请自行根据业务需求更改。

import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;/*** ConstraintValidator<State, String>前一个代表需要校验的注解,后一个代表校验类型*/
public class Validation implements ConstraintValidator<State, String> {/**** @param value 将来要校验的数据* @param constraintValidatorContext* @return*/@Overridepublic boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {//校验规则if (value == null) {return false;}if (value.equals("已发布") || value.equals("草稿")) {return true;}return false;}
}

2.2 创建注解对象

注解名称,请根据自己业务需求更改。
import jakarta.validation.Constraint;
import jakarta.validation.Payload;import java.lang.annotation.*;@Documented //元注解,代表可在文档显示
@Constraint(validatedBy = {Validation.class} //指定提供校验规则的类,该类需要自己指定
)
//元注解,代表注解适用的对象(方法、字段、注解、类、属性)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME) //元注解,代表注解的作用范围
public @interface State {//报错提示String message() default "state参数只能是已发布或者草稿";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};
}

2.3 使用注解

找到对应的实体类,在需要校验的参数上添加该注解即可。例如我这里需要对state进行校验。

3. 分组校验

分组校验是指把校验项进行归类分组,在完成不同的功能的时候,校验指定组中的校验项。
分组校验常用于增加和修改操作时对数据的校验。
分组校验的 流程:
1.定义分组 
2.定义校验项时指定归属的分组
3.校验时指定要校验的分组

3.1 实体类内部定义接口

3.2 在参数上指定分组

3.3 给@Validated注解赋值
注意: 如果在方法上对参数进行校验,需要在类上添加@Validated注解。如果在实体类中对成员遍历进行校验,需要在使用到这个类的接口方法中添加@Validated注解
最后最后!!!各位看官觉得有用就收藏、点赞、评论一下吧。我看到问题后,我会第一时间回复的!  
http://www.lryc.cn/news/274671.html

相关文章:

  • Multisim各版本安装指南
  • 大学生搜题软件,未来可期吗?
  • JMeter使用
  • ChatGPT 进行 SEO的使用技巧
  • PDF.js实现搜索多个不同的关键词高亮显示效果
  • ES高级用法:DeleteByQueryRequest
  • 使用docker build构建image
  • 【亲测有效】Win11 卸载MySQL5.7以及安装MySQL8.0.35
  • Beauty algorithm(三)腮红
  • DNS安全与访问控制
  • 【LMM 011】MiniGPT-5:通过 Generative Vokens 进行交错视觉语言生成的多模态大模型
  • WEB 3D技术 three.js 顶点交换
  • ROS学习笔记(11)进一步深入了解ROS第五步
  • 性能优化-OpenMP基础教程(四)-Android上运行OpenMP
  • 【转载】-财报-丈母娘教咱看财报(资产负债表-利润表-现金流量表)
  • HTML5大作业-精致版个人博客空间模板源码
  • 数字IC后端设计实现之Innovus update_names和changeInstName的各种应用场景
  • 1月6日,每日信息差
  • 部署上传漏洞的靶场环境upload-labs
  • Linux的压缩与解压
  • 互联网大厂面试题目
  • 单文件上传
  • 美经济学家预测,明年美股或将大跌86%,你怎么看?
  • 【BIAI】lecture 3 - GD BP CNN Hands-on
  • 计算机Java项目|基于SpringBoot+Vue的图书个性化推荐系统
  • lenovo联想小新Pro-13 2020 Intel IML版笔记本电脑(82DN)原装出厂Win10系统镜像
  • 54、Softmax 分类器以及它的底层原理
  • 【React】class组件生命周期函数的梳理和总结(第一篇)
  • [每周一更]-(第49期):一名成熟Go开发需储备的知识点(答案篇)- 2
  • 23种设计模式Python版