Spring Boot 数据校验 Validation 实战
1. 前言
在日常开发中,后端经常需要对请求参数进行校验。比如注册用户时,用户名不能为空、密码长度要在 6~16 之间、邮箱必须符合格式等。如果不做校验,脏数据可能进入数据库造成业务问题;如果校验方式不合理,代码又会变得臃肿。
相信很多小伙伴还在 Controller 代码中写大量重复的 if-else 判断,既冗余又难维护。下面介绍 Spring Boot 提供的 Validation(基于 JSR 303/380 规范),让我们能通过注解的方式优雅地完成参数校验,极大地提升了开发效率和代码可读性。
2. 没有使用 Validation 的传统写法
当不使用数据校验框架时,我们通常会在 Controller 中手动校验参数,代码会像这样:
场景:创建用户接口
定义接受参数对象 UserDto
// UserDTO 实体类
class UserDto {
private String name;
private Integer age;
private String email;
// getter 和 setter 省略
}
要求:用户名不能为空,长度 5-10;邮箱格式必须正确;年龄在 18-60 之间。
@RestController
@RequestMapping("/user")
public class UserController {
@PostMapping("/add")
public String addUser(UserDto user) {
// 手动校验参数
if (user.getName() == null || user.getName().trim().isEmpty()) {
return "用户名不能为空";
}
if (user.getName().length() < 5 || user.getName().length() > 10) {
return "用户名长度必须在 5-10 之间";
}
if (user.getAge() == null) {
return "年龄不能为空";
}
if (user.getAge() < 18 || user.getAge() > ) {
;
}
(user.getEmail() == || user.getEmail().trim().isEmpty()) {
;
}
(!user.getEmail().matches()) {
;
}
;
}
}


