在实际开发中,肯定会经常遇到对参数字段进行校验的场景,通常我们只能写大量的ifelse来完成校验工作,而如果使用SpringBootValidation则可以轻松的通过注解来完成,接下来小编给大家介绍下利用SpringBoot Validation快速实现数据校验的示例代码,需
前言
在实际开发中,肯定会经常遇到对参数字段进行校验的场景,虽然大多数情况下前端都会进行校验,但我们知道前端并不可信,所以后台也需要进行校验,通常我们只能写大量的if else
来完成校验工作,而如果使用SpringBoot Validation
则可以轻松的通过注解来完成。
环境配置
引入Jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
使用示例
@Data
@ToString
public class DemoEntity {
// 不能为空,比较时会除去空格
@NotBlank(message = "名称不能为空")
private String name;
// amount必须是一个大于等于5,小于等于10的数字
@DecimalMax(value = "10")
@DecimalMin(value = "5")
private BigDecimal amount;
// 必须符合email格式
@Email
private String email;
// size长度必须在5到10之间
@Size(max = 10, min = 5)
private String size;
// age大小必须在18到35之间
@Min(value = 18)
@Max(value = 35)
private int age;
// user不能为null
@NotNull
private User user;
// 限制必须为小数,且整数位integer最多2位,小数位fraction最多为4位
@Digits(integer = 2, fraction = 4)
private BigDecimal digits;
// 限制必须为未来的日期
@Future
private Date future;
// 限制必须为过期的日期
@Past
private Date past;
// 限制必须是一个未来或现在的时间
@FutureOrPresent
private Date futureOrPast;
// 支持正则表达式
@Pattern(regexp = "^\\d+$")
private String digit;
}
注意:请求时,参数必须加上@Validated
才能生效
@RestController
@Slf4j
@RequestMapping("/valid")
public class TestValidController {
@RequestMapping("/demo1")
public String demo12(@Validated @RequestBody DemoEntity demoEntity) {
try {
return "SUCCESS";
} catch (Exception e) {
log.error(e.getMessage(), e);
return "FAIL";
}
}
}
分组
有些时候,同一个参数在不能场景下校验的规则可能不一样,这时候我们就可以通过分组的方式来实现
实体类name
属性设置了两种校验,分别针对groups
为A和B的生效
@NotBlank(message = "名称不能为空", groups = A.class)
@Size(max = 10, min = 5, groups = B.class)
private String name;
只要在相对应的接口上选择A或者B即可
@RestController
@Slf4j
@RequestMapping("/valid")
public class TestValidController {
@RequestMapping("/demo1")
public String demo1(@Validated({A.class}) @RequestBody DemoEntity demoEntity) {
try {
return "SUCCESS";
} catch (Exception e) {
log.error(e.getMessage(), e);
return "FAIL";
}
}
@RequestMapping("/demo2")
public String demo2(@Validated({B.class}) @RequestBody DemoEntity demoEntity) {
try {
return "SUCCESS";
} catch (Exception e) {
log.error(e.getMessage(), e);
return "FAIL";
}
}
}
到此这篇关于利用SpringBoot Validation快速实现数据校验的文章就介绍到这了,更多相关SpringBoot Validation数据校验内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:SpringBoot Validation快速实现数据校验的示例代码
基础教程推荐
- Java文件管理操作的知识点整理 2023-05-19
- Java并发编程进阶之线程控制篇 2023-03-07
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- Java实现线程插队的示例代码 2022-09-03
- springboot自定义starter方法及注解实例 2023-03-31
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- java实现多人聊天系统 2023-05-19
- Java数据结构之对象比较详解 2023-03-07
- java基础知识之FileInputStream流的使用 2023-08-11
- Java实现查找文件和替换文件内容 2023-04-06