SpringBoot学习篇之@Valid与@Validated的区别

下面是SpringBoot学习篇之@Valid@Validated的区别的攻略。

一、@Valid@Validated的作用

在SpringMVC中,@Valid@Validated注解全部用于校验参数。使用它们可以大大简化代码和提高代码的可读性。

二、@Valid@Validated的区别

  • @Valid是JSR-303/JSR-349规范中的注解,而@Validated是Spring中自己扩展的注解
  • @Validated注解比@Valid注解功能更加强大,支持分组校验、支持级联校验等

三、@Valid@Validated的使用

3.1 @Valid

@Valid注解要求被注解的参数对象中的属性都必须满足相应的验证规则,如果不满足,则使用BindingResult获取错误信息。

@PostMapping("/user")
public String addUser(@Valid @RequestBody User user, BindingResult bindingResult) {
    if (bindingResult.hasErrors()) {
        return "error"; // 当出现错误时,返回error页面
    }
    // 如果验证通过,则继续执行业务逻辑
    // ...
}

3.2 @Validated

@Validated允许我们使用分组,而且支持级联校验,在参数校验中,使用了@Validated注解,比如下面这个例子:

@Data
public class Person {
    @NotNull(message = "姓名不能为空", groups = AddGroup.class)
    private String name;

    @NotNull(message = "年龄不能为空", groups = AddGroup.class)
    @Max(value = 120, message = "年龄不能大于120岁", groups = AddGroup.class)
    private Integer age;

    @Email(message = "邮件格式不正确", groups = ModifyGroup.class)
    @NotBlank(message = "邮件不能为空", groups = ModifyGroup.class)
    private String email;

    @Valid
    private School school;
}

@Data
public class School {
    @NotBlank(message = "学校名称不能为空", groups = {AddGroup.class, ModifyGroup.class})
    private String schoolName;
}

其中,Person类被注解了@Validated,即需要进行完整的参数校验,包括分组校验和级联校验。同时,School类还使用了@Valid注解,即进行级联校验。

@PostMapping("/person")
public String addPerson(@Validated(value = {AddGroup.class, ModifyGroup.class}) @RequestBody Person person) {
    // 如果验证通过,则继续执行业务逻辑
    // ...
}

上面的方法中,使用了@Validated注解,同时指定了验证的分组,即AddGroup.classModifyGroup.class。这样我们就可以在方法调用时执行对应的验证规则了。

四、总结

通过本篇攻略,我们介绍了@Valid@Validated的作用及其区别,并且使用了两个示例,让大家可以更加轻松地掌握这两个注解的使用方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot学习篇之@Valid与@Validated的区别 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java实现二维码QRCode的编码和解码与示例解析

    Java实现二维码QRCode的编码和解码 1. QRCode介绍 QRCode全称Quick Response Code,是由日本的Denso Wave公司于1994年发明的一种二维码。相比于传统的条形码,QRCode可以存储更多的信息,并且具备了自我校验的能力,容错率也更高,适用于快速读取信息的场合。目前QRCode已经广泛应用于各方面,如支付、门禁、会…

    Java 2023年5月20日
    00
  • Java读写文件创建文件夹多种方法示例详解

    请您先到我的网站上查看该文章的具体内容,以便更好地理解我的回答,并方便您对我的回答进行参考对照:Java读写文件创建文件夹多种方法示例详解 首先,本文中提到了多种文件读写方法,包括字节流,字符流及NIO方式。在进行文件读写操作前,需首先声明文件路径,一般会使用java.io.File类来表示文件或者目录。文件读写时,需要指定文件的输入流或输出流。在Java中…

    Java 2023年5月20日
    00
  • Spring项目里将SQL语句写在.sql文件中的方法

    在Spring项目中,将SQL语句写在.sql文件中可以提高代码可维护性、可重用性。具体步骤如下: 1. 创建.sql文件 在项目中创建一个新的.sql文件,例如:user.sql,并将SQL语句写入该文件中。例如,以下是创建一个名为user的表的示例SQL: CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_…

    Java 2023年5月20日
    00
  • Java 数据库连接池Druid 的介绍

    下面就为您详细讲解Java数据库连接池Druid的介绍。 一、概述 Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP等DB池的优点,同时加入了日志监控功能,利用Druid能够大大提高数据库访问的性能,是目前使用比较广泛的数据库连接池之一。 二、特点 Druid具有以下几个特点: 性能优秀。Druid经过多种优化,比如使用简单的S…

    Java 2023年6月3日
    00
  • 使用jdk7的nio2操作文件拷贝和剪切示例

    我来给您讲解 “使用jdk7的nio2操作文件拷贝和剪切示例” 的完整攻略,具体包含了以下内容: 1. NIO2简介 Java NIO(New I/O)是一个在JDK 1.4中引入的新的IO API,位于java.nio包和java.nio.channels包中,这些新API提供了一系列支持快速IO操作的类和接口,可用于代替标准的Java IO API。 使…

    Java 2023年5月19日
    00
  • Spring MVC 自定义数据转换器的思路案例详解

    Spring MVC 自定义数据转换器的思路案例详解 Spring MVC 是一个非常流行的 Java Web 框架,它提供了很多便捷的功能,其中包括数据转换器。数据转换器可以将请求参数转换为 Java 对象,或将 Java 对象转换为响应参数。Spring MVC 默认提供了很多数据转换器,但有时候我们需要自定义数据转换器来满足特定的需求。本文将详细讲解 …

    Java 2023年5月18日
    00
  • Perl使用Tesseract-OCR实现验证码识别教程

    下面我将为您详细讲解如何使用Perl语言配合Tesseract-OCR开源库实现验证码识别。整个过程共分为以下几个步骤: 安装Tesseract-OCR 安装Perl模块 获取验证码图片 预处理图片 使用Tesseract-OCR进行识别 整合以上步骤 接下来,我们将一步一步来看每个步骤的详细说明。 安装Tesseract-OCR Tesseract-OCR…

    Java 2023年5月26日
    00
  • Sprint Boot @Max使用方法详解

    @Max是Spring Boot中的一个注解,用于标记一个字段或方法参数的值必须小于或等于指定的最大值。在本文中,我们将详细介绍@Max注解的作用和使用方法,并提供两个示例。 @Max注解的作用 @Max注解用于标记一个字段或方法参数的值必须小于或等于指定的最大值。当使用@Max注解标记一个字段或方法参数时,如果该字段或方法参数的值大于指定的最大值,则会抛出…

    Java 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部