Spring Validation框架配置

文章目录


Spring Validation框架

关于Spring Validation

Spring Validation框架的主要作用是检查方法的参数的基本有效性。

添加依赖

此框架的依赖项的artifactId为:spring-boot-starter-validation。

<!-- Spring Boot支持Spring Validation用于检查方法参数的基本有效性的依赖项 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
    <version>2.5.0</version>
</dependency>

检查封装的请求参数

需要先在方法的参数(封装的类型)前添加@Valid或@Validated注解,以表示“将检查此参数的基本有效性”,例如:

@PostMapping("/add-new")
public String addNew(@Valid AlbumAddNewParam albumAddNewParam) {
    albumService.addNew(albumAddNewParam);
    return "添加成功!";
}

然后,需要在封装的类型的属性上添加检查注解,以配置对应的检查规则,例如:

@Data
public class AlbumAddNewParam implements Serializable {

    @NotNull
    private String name;
    
}

经过以上配置,参数name将不允许为null值,如果客户端提交的请求中没有name的值,将直接响应400错误!

需要注意:Spring Validation在检查请求参数的格式时,会检查所有属性配置的规则,找出所有的错误,如果希望实现“只要发现错误,就不再向后检查”,需要将其配置为“快速失败”,配置做法是使用配置类:

@Slf4j
@Configuration
public class ValidationConfiguration {

    public ValidationConfiguration() {
        log.debug("创建配置类对象:ValidationConfiguration");
    }

    @Bean
    public javax.validation.Validator validator() {
        return Validation.byProvider(HibernateValidator.class)
                .configure() // 开始配置
                .failFast(true) // 配置快速失败
                .buildValidatorFactory() // 构建Validator工厂
                .getValidator(); // 从Validator工厂中获取Validator对象
    }

}

常用的检查注解有:

  • @NotNull:不允许为null值
    • 可以用于任何类型
  • @NotEmpty:不允许为空字符串(长度为0的字符串),并且会检查是否为null值(为null时报错)
    • 仅能用于字符串类型的参数
  • @NotBlank:不允许为空白,即不允许是“仅由空格、TAB等空白值组成的字符串”
    • 仅能用于字符串类型的参数
  • @Range:通过配置min和max属性来限制数值类型参数的值区间,它不会检查是否为null(为null并不执行任何检查,且不会报错)
    • 仅能用于整型参数
  • @Pattern:通过配置regexp属性来配置正则表达式
    • 仅能用于字符串类型的参数
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

学废Java

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

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

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

打赏作者

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

抵扣说明:

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

余额充值