Spring Boot 中自定义注解实现可选 int 值的校验
2024-01-10 06:19:47
正文:
在实际的应用开发中,我们经常需要对接口的输入进行校验,以确保数据的合法性。在Spring Boot项目中,通过使用Hibernate Validator等校验框架,可以轻松地实现各种校验需求。本文将介绍如何自定义一个注解@InIntValues
,并通过对应的校验器InIntValuesValidator
来实现对输入是否为指定可选int值的校验。
1. 创建自定义可选int值校验注解
首先,我们创建一个自定义注解@InIntValues
,用于标记需要进行可选int值校验的字段或参数。以下是注解的定义:
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
/**
* 可选int值范围校验注解
*/
@Documented
@Constraint(validatedBy = InIntValuesValidator.class)
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface InIntValues {
// 默认错误提示信息
String message() default "必须是指定的int值之一";
// 可选的int值数组
int[] values();
// 分组
Class<?>[] groups() default {};
// 负载
Class<? extends Payload>[] payload() default {};
}
2. 创建可选int值校验器
接下来,我们需要实现可选int值校验的逻辑。为此,创建一个InIntValuesValidator
类,实现ConstraintValidator<InIntValues, Integer>
接口:
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.Arrays;
/**
* 可选int值范围校验器
*/
public class InIntValuesValidator implements ConstraintValidator<InIntValues, Integer> {
private int[] allowedValues;
@Override
public void initialize(InIntValues constraintAnnotation) {
this.allowedValues = constraintAnnotation.values();
}
/**
* 校验方法
* @param value 待校验的整数
* @param context 校验上下文
* @return 校验结果,true表示通过,false表示不通过
*/
@Override
public boolean isValid(Integer value, ConstraintValidatorContext context) {
// 如果值为null,由 @NotNull 校验
if (value == null) {
return true;
}
// 判断值是否在可选的int值数组中
return Arrays.stream(allowedValues).anyMatch(val -> val == value);
}
}
在这个校验器中,我们使用@InIntValues
注解的values()
属性来指定可选的int值数组。在isValid
方法中,我们使用Java 8的Stream API来判断被验证的值是否在这个可选的int值数组中。
3. 在实体类或DTO中应用注解
现在,你可以在需要进行可选int值校验的字段上应用@InIntValues
注解:
public class YourRequestDTO {
@NotBlank(message = "姓名不能为空")
@Chinese
private String name;
@InIntValues(values = {1, 2, 3}, message = "必须是指定的int值之一")
private Integer selectedValue;
// 其他字段...
}
在这个例子中,selectedValue
字段通过@InIntValues
注解进行了可选int值校验。当请求中的selectedValue
字段不是指定的可选int值之一时,将触发校验错误,并返回指定的错误提示信息。
通过这样的自定义注解和校验器,你可以在Spring Boot项目中轻松实现对字段值是否为指定可选int值的校验,提高系统的数据质量和安全性。
文章来源:https://blog.csdn.net/di101cipaqi/article/details/135392783
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!