SpringValidation自定义注解及分组校验功能详解
作者:六花i
这篇文章主要介绍了SpringValidation自定义注解及分组校验功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
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 */ @Override public 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注解。
到此这篇关于SpringValidation自定义注解以及分组校验的文章就介绍到这了,更多相关SpringValidation自定义注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!