当前位置: 代码迷 >> 综合 >> SpringBoot2.0实战(6)整合hibernate-validator进行参数校验
  详细解决方案

SpringBoot2.0实战(6)整合hibernate-validator进行参数校验

热度:78   发布时间:2023-09-29 03:06:54.0

spring-boot-starter-web 项目中默认已经集成了 hibernate-validator

相关知识

@AssertTrue // 用于 boolean 字段,该字段只能为 true

@AssertFalse // 用于 boolean 字段,该字段只能为 false

@DecimalMax // 用于 Number 字段,只能小于或等于该值

@DecimalMin // 用于 Number 字段,只能大于或等于该值

@Digits(integer=2,fraction=20) // 检查是否是数字,校验整数位及小数位

@Future // 检查该字段的日期是否是属于将来的日期

@Length(min=2,max=6) // 用于字符串,检查字段长度是否在指定范围内

@Max // 用于 Number 字段,只能小于或等于该值

@Min // 用于 Number 字段,只能大于或等于该值

@NotNull // 该字段不能为空

@NotEmpty // 用于字符串,该字段不能为空字符串

@NotBlank // 用于字符串,该字段不能为空字符串,忽略空格

@Null // 该字段必须为空

@Size(min=2,max=4) // 用于字符串、数组、集合、Map等,检查该字段的size是否在指定范围

课程目标

本章将在 SpringBoot集成SpringBootJPA完成CURD 的基础上,整合 hibernate-validator,对入参进行校验。

操作步骤

添加依赖

spring-boot-starter-web 已经默认添加对 hibernate-validator 的依赖

SpringBoot2.0实战(6)整合hibernate-validator进行参数校验

 

编码

为实体类添加校验规则

 

SpringBoot2.0实战(6)整合hibernate-validator进行参数校验

使用校验

在 Controller 接口的参数前面添加 @Valid 注解,入参注入时便会自动进行规则校验,如果校验成功,则执行方法体,如果校验失败,有两种处理方法。

  • 在参数列表的最后面添加一个 BindingResult 对象获取校验结果,自行组织输出内容。
  • 不使用 BindingResult 对象,则框架抛出异常,通过异常处理机制可以进行捕获,组织输出内容。

@RestController

SpringBoot2.0实战(6)整合hibernate-validator进行参数校验

 

源码地址

本章源码 : https://github.com/caiyuanzi-song/boot.git

总结

一个安全的接口需要对每一个入参进行校验,以保证参数合法性。

参考资料

http://www.cnblogs.com/mr-yang-localhost/p/7812038.html

https://blog.csdn.net/qq_22845447/article/details/84034289

扩展

自定义校验

创建一个注解,其中 @Constraint 用于指向该注册将使用的自定义校验类

SpringBoot2.0实战(6)整合hibernate-validator进行参数校验

 

创建自定义校验类

SpringBoot2.0实战(6)整合hibernate-validator进行参数校验

 

使用自定义校验

SpringBoot2.0实战(6)整合hibernate-validator进行参数校验

  相关解决方案