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

springboot后端开发-自定义参数校验器

背景

在使用springboot进行后端开发的时候,经常会遇到数据校验的问题, 有时候可能默认的校验器不足以满足自己的需求, 这个时候就需要开发一个自己的校验器

在 Spring Boot 中自定义参数校验器通常涉及以下几个步骤:

1. 定义注解

首先需要定义一个自定义的注解,该注解将用于标记需要校验的字段。

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;@Documented
// 实现真正校验逻辑的验证器
@Constraint(validatedBy = NotAllEmptyValidator.class)
// 注解放置于类上方
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface NotAllEmpty {String message() default "不允许所有参数为空";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};String[] fields default {};
}

在这个例子中,我们定义了一个名为 NotAllEmpty 的注解,并指定了它使用 NotAllEmptyValidator 类进行验证。同时定义了默认的错误消息。

2. 创建校验器

接下来需要创建一个实现 ConstraintValidator 接口的类来实现具体的校验逻辑。

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.Collection;public class NotAllEmptyValidator implements ConstraintValidator<NotAllEmpty, Object> {@Overridepublic void initialize(NotAllEmpty constraintAnnotation) {// 可以在这里初始化一些配置项}@Overridepublic boolean isValid(Object value, ConstraintValidatorContext context) {// 加入自己的验证逻辑return false;}
}

这个 NotAllEmptyValidator 类实现了 ConstraintValidator<NotAllEmpty, Object> 接口,其中 isValid 方法负责检查传入的集合是否为空。

3. 使用自定义注解

最后可以在需要校验的实体类或方法上使用这个自定义注解。

import javax.validation.constraints.NotNull;
import java.util.List;@NotAllEmpty(fields={"name", "age"})
public class MyEntity {private String name;private Integer age;// Getter and Setter
}

或者在控制器的方法参数上使用:

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;@RestController
public class MyController {@PostMapping("/save")public String save(@RequestBody @NotAllEmpty MyEntity reqBody) {// ...}
}

4. 配置 Bean Validation

确保 Spring Boot 应用已经启用了 Bean Validation,这通常是通过添加 spring-boot-starter-validation 依赖自动完成的。

如果使用 Maven,可以添加如下依赖:

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

如果使用 Gradle,则添加:

implementation 'org.springframework.boot:spring-boot-starter-validation'

以上就是如何在 Spring Boot 中创建和使用自定义参数校验器的基本流程。你可以根据自己的需求调整注解和校验器的具体实现细节。

5. 参考文档

Spring MVC Custom Validation
jboss相关章节


http://www.mrgr.cn/news/11390.html

相关文章:

  • 2024年消防设施操作员考试题库及答案
  • docker创建数据库容器并映射存储数据
  • 学习MyBatis-Plus
  • ubuntu系统中通过java程序拷贝文件数据到U盘,在win11中查看文件时间相差8小时
  • P8436 【模板】边双连通分量
  • 【JVM】OOM与调优(二)
  • 【C#】【EXCEL】Bumblebee/Classes/ExEnums.cs
  • 基层医疗云HIS系统源码:云计算、大数据等现代信息技术研发
  • ue5远程渲染和本地渲染的区别,及云渲染的联系
  • Linux——驱动——杂项设备
  • 文件.硬盘.IO
  • 服务器被渗透的表现及检测方法
  • CentOS7 mysql-cluster安装与配置
  • JMeter Plugins之内网插件问题解决
  • 二十三种模式之单例模式(基础了解)
  • coffee小程序怎么做 咖啡店小程序系统开发制作方法
  • 文件上传漏洞(看过就能学会)
  • Circuitjs 内存模块的使用
  • 培训第三十四天(初步了解Docker与套接字的应用)
  • 论文阅读笔记:T-Rex2: Towards Generic Object Detection via Text-Visual Prompt Synergy