SpringBoot参数校验最佳实践

本文介绍了如何在SpringBoot中使用hibernate-validator进行参数校验,包括基本使用、整合hibernate-validator、统一异常处理、分组校验等。文章还提供了多种验证规则示例,并强调了分组校验在实际开发中的局限性。最后,作者分享了一系列Java中高级知识点的学习资源。
摘要由CSDN通过智能技术生成

我们这里使用hibernate-validator作为对象参数验证器,所以在正式介绍SpringBoot参数验证之前,需要先简单了解一下hibernate-validator的使用。

hibernate-validator基本使用

引入依赖

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.17.Final</version>
</dependency>
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
</dependency>

编写需要验证对象

验证要求 person对象的用户名不能为空,年龄在1-150岁之间。

@Data
public class Person {

    @NotBlank(message = "username must not be null")
    private String username;

    @Min(value = 1, message = "age must be >= 1")
    @Max(value = 150, message = "age must be < 150")
    private Integer age;
}

验证对象属性是否符合要求

    /**
     * 对象验证器
     */
    public Validator validator() {
        ValidatorFactory validatorFactory =
                Validation
                        .byProvider(HibernateValidator.class)
                        .configure()
                        // 验证属性时,如果有一个验证不通过就返回,不需要验证所有属性
                        .addProperty("hibernate.validator.fail_fast", "true")
                        .buildValidatorFactory();
        return validatorFactory.getValidator();
    }

    @Test
    public void test() throws Exception {
        Person person = new Person();
        Set<ConstraintViolation<Person>> validate = validator().validate(person);
        validate.forEach(errorParam -> {
            System.out.println(errorParam.getMessage());
        });
    }
  1. 我们只需要验证的对象实例即可完成对象验证,如果验证成功,那么返回一个空的集合,如果验证失败,会返回具体的验证失败的属性信息。
  2. 我们输出验证失败的错误信息如下:
username must not be null

验证规则

validator提供了大量的验证注解供我们使用,主要以下几类:

image.png

空/非空验证

  1. @Null 元素必须为
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值