Java中的三种校验注解的使用(@Valid,@Validated和@PathVariable)

yizhihongxing

Java 中,校验注解的作用是为了验证数据的有效性,保证数据的准确性和安全性。其中 @Valid、@Validated 和 @PathVariable 是三种常用的校验注解,下面让我们来深入了解一下它们的使用方法和区别。

@Valid

@Valid 注解基于 JSR-303 规范,需要结合 Hibernate Validator 等校验框架实现。主要用于校验 JavaBean 对象中的字段或集合中的元素。与其他校验注解不同,@Valid 仅能用于对象类型,不能用于基本数据类型。

使用 @Valid 做数据验证的步骤如下:

  1. 引入依赖:需要引入 Hibernate Validator 的依赖。
  2. 在需要校验的 JavaBean 中添加注解:在需要校验的字段上添加对应校验注解。
  3. 在 Controller 类中添加注解:在需要校验的 JavaBean 参数前添加 @Valid 注解即可。

示例代码:

// Model 示例
public class User {
    @NotNull(message = "用户名不能为空")
    @Size(min = 6, max = 20, message = "用户名长度应在6-20个字符之间")
    private String username;

    @NotNull(message = "密码不能为空")
    @Size(min = 6, max = 20, message = "密码长度应在6-20个字符之间")
    private String password;
}

// Controller 示例
@RestController
public class UserController {
    @PostMapping("/user")
    public void addUser(@Valid @RequestBody User user) {
        // do something
    }
}

@Validated

@Validated 注解基于 JSR-303 规范和 Spring 框架,也可以用于校验基本数据类型,支持分组校验和级联校验。主要用于校验 Controller 层的参数。

使用 @Validated 做数据验证的步骤如下:

  1. 在需要校验的 JavaBean 中添加注解:在需要校验的字段上添加对应校验注解。
  2. 在 Controller 类中添加注解:在需要校验的 JavaBean 参数前添加 @Validated 注解即可。
  3. 可以使用 groups 参数指定校验的分组,同时可以使用 @NotNull 和 @NotBlank 等注解对基本类型进行校验。

示例代码:

@RestController
@RequestMapping("/user")
@Validated
public class UserController {
    @PostMapping("/{uid}")
    public void updateUser(@PathVariable("uid") @NotNull(message = "用户ID不能为空") Long uid,
                            @RequestBody @Validated(value = User.Update.class) User user) {
        // do something
    }

    public interface Update {}
}

public class User {
    @NotBlank
    private String name;

    @NotNull(groups = Update.class, message = "用户ID不能为空")
    private Long id;
}

@PathVariable

@PathVariable 是 Spring MVC 中的注解,用于获取 URL 中的参数值进行处理,可以用于获取 RESTful 风格路径中的参数。

示例代码:

@RestController
@RequestMapping("/user")
public class UserController {
    @GetMapping("/{uid}")
    public User getUser(@PathVariable("uid") Long uid) {
        // 通过 uid 查询用户信息
        return user;
    }
}

以上就是 Java 中三种校验注解的详细攻略,希望对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的三种校验注解的使用(@Valid,@Validated和@PathVariable) - Python技术站

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

相关文章

  • spring data简化jpa开发_动力节点Java学院整理

    Spring Data简化JPA开发 在使用JPA进行数据库开发时,我们需要进行很多重复性的操作,比如编写DAO接口、SQL语句等,这些都很繁琐,Spring Data提供了一种简化JPA开发的方式,能够让我们快速地进行开发。 使用步骤 Spring Data为我们提供了很多模板,可以针对不同的数据源进行使用。 选择相应的数据源模板:我们需要在pom.xml…

    Java 2023年5月20日
    00
  • Java TreeSet 添加失败的解决

    以下是Java TreeSet 添加失败的解决攻略,包括解决方法及示例说明: 问题描述 在使用Java TreeSet时,当添加元素时可能会因为一些特殊情况(例如元素值重复)导致添加失败。 解决方法 Java TreeSet是一种有序集合,只能添加不重复的元素。如果要添加的元素已经存在,那么添加操作将会失败,TreeSet会直接忽略这个元素。因此,为了避免添…

    Java 2023年5月26日
    00
  • javamail实现注册激活邮件

    JavaMail 是 Java 的一个邮件处理 API,可以用来实现邮件的收发、抄送、群发、附件等操作。利用 JavaMail 实现注册激活邮件功能是一个常见的需求。以下是实现该功能的详细攻略。 配置 pom.xml 文件 首先需要在项目的 pom.xml 文件中添加 JavaMail 依赖,这里以最新版本 1.6.2 为例: <dependency&…

    Java 2023年6月15日
    00
  • Mybatis实现Mapper动态代理方式详解

    Mybatis实现Mapper动态代理方式详解 什么是Mapper动态代理 Mapper动态代理是Mybatis框架中的一种技术,在Mybatis中通过定义Mapper接口,在运行时自动生成接口的代理对象。使用Mapper动态代理可以使我们更加方便地编写接口,不需要编写SQL语句,提高代码的可读性和可维护性。 实现步骤 1. 定义Mapper接口 首先,我们…

    Java 2023年5月20日
    00
  • SpringBoot2 实现JPA分页和排序分页的案例

    下面是关于“SpringBoot2 实现JPA分页和排序分页的案例”的完整攻略: 1. 简介 SpringBoot是一款轻量级的Java开发框架,它可以用来构建各种类型的Web应用程序。其中,JPA(Java Persistence API)是Java EE规范的一部分,用于管理Java对象和关系型数据库之间的映射关系。JPA的分页和排序功能在实际开发中非常…

    Java 2023年6月2日
    00
  • Java 3种方法实现进制转换

    Java 3种方法实现进制转换是一个很基础的知识点,需要掌握的细节较多。在进行进制转换时,需要将目标进制的数位按权展开,并乘以相应的权值,再将结果相加即可。Java 语言提供了多种方法来实现进制转换,下面分别进行详细讲解: 1. 常规方法 常规方法是最直接的一种进制转换方法,使用起来简单明了。Java 提供了 Integer 类中的 toBinaryStri…

    Java 2023年5月26日
    00
  • spring boot整合CAS Client实现单点登陆验证的示例

    介绍一下如何使用Spring Boot整合CAS Client实现单点登录验证。 准备工作 在maven或gradle中引入Spring Boot Cas Starter。 配置CAS Server地址。 示例一:配置客户端登录方式 配置CAS Client,添加以下配置: cas: server-url-prefix: https://cas.server…

    Java 2023年5月20日
    00
  • JSP/Servlet应用程序优化八法

    JSP/Servlet应用程序优化八法,是指在开发和维护JSP/Servlet应用程序时,为提高应用程序性能和可维护性而采取的八项优化策略。以下是这八项优化策略的详细讲解。 一、使用JSTL标签库 JSTL是Java服务器页面标准标签库,它是JSP页面处理的标准解决方案。使用JSTL标签库可以有效地减少JSP页面中的Java代码,提高页面的可读性和可维护性。…

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