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 Hibernate使用SessionFactory创建Session案例详解

    下面是详细讲解“Java Hibernate使用SessionFactory创建Session案例详解”的攻略,包括了相关的示例代码。 什么是SessionFactory? SessionFactory是Hibernate框架中一个重要的接口,用来创建Session。在使用Hibernate进行开发时,我们通常都会使用SessionFactory来获取一个S…

    Java 2023年5月19日
    00
  • win2K下IIS5.0配置asp+cgi+php+mysql全攻略

    针对“win2K下IIS5.0配置asp+cgi+php+mysql全攻略”的完整攻略,我结合实际操作经验,详细阐述以下步骤和注意事项。 确认安装IIS5.0 首先,我们需要确定已经在win2K系统中安装了IIS5.0,具体步骤如下: 点击“开始”菜单,进入“设置”选项卡; 选择“控制面板”,然后点击“添加/删除程序”; 在列表中找到“添加/删除Window…

    Java 2023年5月20日
    00
  • Java实现FTP上传与下载功能

    下面是Java实现FTP上传与下载功能的完整攻略: 1. 准备环境 在进行FTP上传与下载之前,需要准备以下环境: Java运行环境 FTP服务器 FTP登录账号和密码 2. 引入FTP客户端库 Java提供了FTP客户端库供我们使用,常见的有Apache commons-net和Spring FTP等,这里我们以Apache commons-net为例。在…

    Java 2023年5月20日
    00
  • Java定时器例子_动力节点Java学院整理

    下面是针对“Java定时器例子_动力节点Java学院整理”文章的完整攻略。需要注意的是,由于该文章非我编写,所以以下只是针对该文章内容的详细讲解。 标题 该文章的标题为“Java定时器例子_动力节点Java学院整理”,比较简洁明了,可以让人一眼看出该文章的主题。 介绍 文章的开头介绍了Java中定时器的概念和功用。详细讲解了Java中定时器相关类的使用,例如…

    Java 2023年5月26日
    00
  • JSP中通过Servlet 将服务器硬盘图片并展示到浏览器

    在JSP中通过Servlet展示服务器硬盘上的图片,可以按照以下步骤来实现: 在web.xml文件中配置servlet 在web.xml文件中配置servlet,将servlet的访问路径配置为“/image”,并将servlet的类名配置为“com.example.ImageServlet”。 示例代码: <servlet> <servl…

    Java 2023年6月15日
    00
  • struts2 validation.xml 验证规则代码解析

    为了让大家更好地理解和使用Struts2的数据验证功能,我们先来详细讲解一下“struts2 validation.xml 验证规则代码解析”的完整攻略。 一、Struts2数据验证简介 Struts2是一款基于MVC架构模式的web应用程序开发框架,可以快速地搭建一个web应用程序。在web应用程序的业务逻辑中,有时需要对用户提交的请求参数进行验证,比如用…

    Java 2023年5月20日
    00
  • Java中LocalDateTime的具体用法

    关于Java中的LocalDateTime,下面就来详细讲解一下。 什么是LocalDateTime? LocalDateTime是Java 8中引入的新类,是不可变的日期时间对象,用于表示某个特定的日期和时间,不包含与时区相关的信息。 LocalDateTime的具体用法 创建LocalDateTime对象 使用静态工厂方法now()可以获取当前时间的Lo…

    Java 2023年5月20日
    00
  • springboot中使用jpa下hibernate的ddl-auto方式

    下面是使用JPA下Hibernate的ddl-auto方式在Spring Boot中的完整攻略。 1. 配置JPA数据源 在使用JPA下Hibernate的ddl-auto方式之前,我们需要先配置JPA的数据源。例如,我们可以使用application.properties文件来配置JPA数据源,方法如下: spring.datasource.url=jdb…

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