使用@Validate分组验证参数

 更新时间:2024年11月11日 10:44:35   作者:清梦压星河_Ciao  
SpringFramework的@Validated注解用于方法级别参数验证,结合BeanValidation规范,支持分组验证,通过指定验证分组,可以在不同场景下执行不同的验证逻辑

@Validate分组验证参数

public interface Group {

    /**
     * 新增操作
     */
    interface  ADD {}

    /**
     * 更新操作
     */
    interface UPDATE {}

    /**
     * 更新操作
     */
    interface DELETE {}
}
@Data
@EqualsAndHashCode(callSuper = false)
public class StudentInfoDto implements Serializable {

    private static final long serialVersionUID = 1L;

    @JsonSerialize(using = ToStringSerializer.class)
    @NotBlank(message = "主键不能为空", groups = {Group.DELETE.class, Group.UPDATE.class})
    private String id;

    private String name;
}
@PostMapping(value = "/delete")
public Result delete(@RequestBody @Validated(value = Group.DELETE.class) final StudentInfoDto studentInfoDto) {
    return studentService.delete(studentInfoDto.getId());
}

@Validated 注解是 Spring Framework 提供的一种用于方法级别参数验证的注解。

它通常与 Bean Validation(JSR-380)规范结合使用,用于对方法参数进行验证。

这个注解可以放在方法的参数列表上,表示需要对该参数进行验证。

在你提到的 @Validated(value = Group.DELETE.class) 中,value = Group.DELETE.class 是一个参数,它的作用是指定验证时使用的验证分组(Validation Group)。

验证分组可以用于在不同场景下执行不同的验证逻辑。

在这里,Group.DELETE.class 可能是一个自定义的验证分组类,它定义了在执行删除操作时需要进行的验证规则。

举个例子

假设有一个用户删除的方法,只有当用户的权限满足一定条件时才能执行删除操作。

那么就可以定义一个删除操作的验证分组,其中包含对用户权限的验证规则。

当方法参数被 @Validated(value = Group.DELETE.class) 注解标记时,就会使用指定的验证分组对方法参数进行验证。

需要注意

@Validated 注解是 Spring 框架提供的,与 @Valid 注解不同,后者是 Bean Validation(JSR-380)规范中的注解。

虽然它们都可以用于参数验证,但 @Validated 注解更加灵活,支持分组验证等功能。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java利用朴素贝叶斯分类算法实现信息分类

    Java利用朴素贝叶斯分类算法实现信息分类

    贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法。本文将利用朴素贝叶斯分类算法实现信息分类,需要的可以参考一下
    2022-06-06
  • springboot 使用自定义的aspect的示例代码

    springboot 使用自定义的aspect的示例代码

    这篇文章主要介绍了springboot 使用自定义的aspect的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 深入浅出了解happens-before原则

    深入浅出了解happens-before原则

    一提到happens-before原则,就让人有点“丈二和尚摸不着头脑”。这个涵盖了整个JMM中可见性原则的规则,究竟如何理解,把我个人一些理解记录下来。下面可以和小编一起学习
    2019-05-05
  • java中参数传递方式详解

    java中参数传递方式详解

    这篇文章主要介绍了java中参数传递方式详解的相关资料,需要的朋友可以参考下
    2017-03-03
  • java并发包JUC同步器框架AQS框架原文翻译

    java并发包JUC同步器框架AQS框架原文翻译

    发现了一篇JDK作者的论文《The java.util.concurrent Synchronizer Framework》主要描述了作者对AbstractQueuedSynchronizer同步器框架的设计和实现。权威性毋庸置疑!自然需要拜读一下,配上中文翻译,希望大家能有所收获
    2022-02-02
  • RabbitMQ消息队列实现延迟任务示例

    RabbitMQ消息队列实现延迟任务示例

    这篇文章主要为大家介绍了RabbitMQ消息队列实现延迟任务示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • java数据结构基础:栈

    java数据结构基础:栈

    这篇文章主要介绍了Java的数据解构基础,希望对广大的程序爱好者有所帮助,同时祝大家有一个好成绩,需要的朋友可以参考下,希望能给你带来帮助
    2021-07-07
  • 图解Java ReentrantLock的条件变量Condition机制

    图解Java ReentrantLock的条件变量Condition机制

    想必大家都使用过wait()和notify()这两个方法把,他们主要用于多线程间的协同处理。而RenentrantLock也支持这样条件变量的能力,而且相对于synchronized 更加强大,能够支持多个条件变量,本文就来详细说说
    2022-10-10
  • @Controller、@RestController注解区别详解

    @Controller、@RestController注解区别详解

    这篇文章主要介绍了@Controller、@RestController注解区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Spark SQL 编程初级实践详解

    Spark SQL 编程初级实践详解

    这篇文章主要为大家介绍了Spark SQL 编程初级实践详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04

最新评论