1. @NotBlank:非空神器
意思: 只能用于 String 。它要求字符串既不能为 null,长度也必须大于 0,且不能全是空格。
-
对比:
-
@NotNull: 只要不是null就算过。""(空字符串) 能通过。 -
@NotEmpty: 不能为null且长度 > 0。" "(全是空格) 能通过。 -
@NotBlank: 最严格。null、""、" "统统不准过。
-
使用场景: 用户名、密码、地址等必填文本。
2. @Pattern:正则大杀器
意思: 验证字符串是否符合你定义的 正则表达式。
- 属性:
regexp传入正则表达式。
使用场景: 手机号、邮箱、身份证号、邮编等有固定格式的字符串。
3. 实战代码演示
假设你要写一个用户注册的接口,你的 DTO(数据传输对象)应该长这样:
Java
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
public class UserRegisterDTO {
@NotBlank(message = "用户名不能为空")
private String username;
@NotBlank(message = "手机号不能为空")
@Pattern(
regexp = "^1[3-9]\\d{9}$",
message = "手机号格式不正确"
)
private String phoneNumber;
// 省略 getter/setter
}
关键点: 要想让这些注解生效,你在 Controller 的方法参数前必须加上 @Valid 或 @Validated 注解!
Java
@PostMapping("/register")
public Result register(@Validated @RequestBody UserRegisterDTO dto) {
// 如果校验失败,Spring 会直接抛出异常或返回 400,根本进不到这一行
return Result.success();
}