【Javax.Validation】✈️整合 SpringBoot 实现运行时的参数校验

目录

👋前言

👀一、Validation 依赖

📫二、常见注解

        2.1 不需要指定注解参数

        2.2 需要声明注解参数

💞️三、项目测试注解使用

        3.1 依赖引入

        3.2 实体类创建

        3.3 创建对外接口

         3.4 模拟请求

🌱四、章末


👋前言

        小伙伴们大家好,最近SH天气也是迎来了高温橙色预警,要注意防暑;最近在公众号上看到了一个使用外部依赖减少项目中参数校验的文章,这个外部依赖属于 Validation,项目中确实有用到,今天再来学习通学习下该依赖提供的常见注解;上篇文章的链接如下:

【Java Bean 映射器】通过 MapStruct 和 BeanUtils 拷贝对象的区别-优快云博客

👀一、Validation 依赖

        该依赖是 Java  标准中的一部分,提供了一套对 Java Bean 验证的机制。这套机制允许在运行时验证对象的属性是否满足预期的条件,主要有以下特点:

  • 简单易用:通过注解完成验证逻辑,简化了开发过程以及省略大量手动 if - else 判断
  • 独立性:验证逻辑与业务逻辑分离,增强了代码的模块化和可维护性。
  • 标准化:基于 Java 标准,广泛支持,可以与各种框架和库集成使用。

另外的话,该注解主要用于验证 RESTful API 的请求参数也就是前端传来的接口请求校验

📫二、常见注解

        2.1 不需要指定注解参数

                这些注解的使用比较简单,直接在需要校验的字段上根据要求使用符合的注解即可

注解说明
@NotNull元素必须非空(非null 且非空字符串)
@NotEmpty元素必须非空且长度>0
@NotBlank元素字符串必须非空,并且至少包含一个非空白字符
@Null元素必须为null
@AssertTrue元素布尔值必须为true
@AssertFalse元素布尔值必须为false
@Email

元素必须是有效的电子邮件地址

        2.2 需要声明注解参数
注解说明
@Size字符串或集合的数量是否在指定的范围之内
@Length字符串元素的长度是否在指定的范围内
@Pattern元素是否符合指定的正则表达式匹配

💞️三、项目测试注解使用

        环境准备:搭建一个简易的 SPringBoot 项目可运行,准备一个接口模拟请求工具,本地使用的是 ApiPost

        3.1 依赖引入

                因为默认的 SPringBoot 项目是没有帮我们集成这个依赖的,需要手动引入以下配置,之后刷新下 maven 自动帮我们下载依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        3.2 实体类创建

                这里普通的不需要参数的注解不多讲,主要是有几个需要传入参数的,比如需要判断大小的注解需要给一个值的区间,也可以声明异常提示信息;需要正则判断的元素要提供一个正则表达式和异常提示信息...

import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.*;
import java.util.ArrayList;

/**
 * @author HuangBen 
 */
@Data
public class TestValidEnity {

    @NotNull
    private Integer id;

    @NotEmpty
    private String name1;

    @NotBlank
    private String name2;

    @Null
    private Object obj;

    @AssertTrue
    private Boolean bool;

    @Size(max = 10, message = "list元素长度超过限制")
    private ArrayList<Object> list;

    @Length(max = 10, min = 5, message = "str元素长度应该在5-10之间")
    private String str;

    @Min(value = 10, message = "num数值过小,最小值为10")
    private Integer num;

    @Email
    private String eamil;

    @Pattern(regexp = "^\\d{4}-\\d{2}-\\d{2}$", message = "date类型应该为 yyyy-MM-dd ")
    private String date;


}
        3.3 创建对外接口

        这里就简单接收参数,并且打印即可

        注:这里的 @Valid 注解必要并且位置需要在请求的参数之前

         3.4 模拟请求

                3.4.1 请求参数不合法

                首次模拟请求的话,将几个需要参数的注解字段传递错误,该请求会返回错误信息,如下对应每个元素

 

 

                        3.4.2 请求参数正常

                         参数正常合法时,请求正常传递到后端并且被接收打印

🌱四、章末

        文章到这里就结束了~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

先锋 Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值