写点什么

Java 约束注解

用户头像
HeGuang
关注
发布于: 2020 年 08 月 23 日

常用约束注解

相关依赖

初级注解使用

public class UserInfo {
@NotNull(message = "用户ID不能为空 ")
private Integer id;
@NotEmpty(message = "用户名不能为空")
private String username;
/**
* NotBlank 会自动去掉前后空格
*/
@NotBlank(message = "用户密码不能为空")
@Length(min = 6, max = 20, message = "密码不能少于6位多于20位")
private String password;
@Email(message = "格式必须为有效邮箱")
private String email;
@Min(value = 18, message = "年龄不能小于18")
@Max(value = 60, message = "年龄不能大于60")
private Integer age;
@Size(min = 1, message = "不能少于一个好友")
private List<UserInfo> friends;
private String phone;
@Past(message = "生日不能为未来日期")
private LocalDate date;
}

级联验证

比如定义了一个 List<UserInfo> list,现在我希望集合里面的 userInfo也能符合业务验证要求,

@Size(min = 1, message = "不能少于一个好友")
@Size(min = 1, message = "不能少于一个好友")
private List<@Valid UserInfo> friends; // 这样就能实现级联验证了



中级约束之分组验证

有些场景,比如登录是一定要验证 id 名称那些的,而注册的时候并不需要,能不能分场合进行验证呢


public class UserInfo {
// 登录场景
public interface LoginGroup{}
// 注册场景
public interface RegisterGroup{}

@NotNull(message = "用户ID不能为空", groups = LoginGroup.class)
private Integer id;
@NotEmpty(message = "用户名不能为空")
private String username;
/**
* NotBlank 会自动去掉前后空格
*/
@NotBlank(message = "用户密码不能为空")
@Length(min = 6, max = 20, message = "密码不能少于6位多于20位")
private String password;
@NotNull(message = "邮箱不能为空", groups = RegisterGroup.class)
@Email(message = "格式必须为有效邮箱")
private String email;
}






约束注解之组序列

// 登录场景
public interface LoginGroup{}
// 注册场景
public interface RegisterGroup{}
// 组排序,先验证登录场景再验证注册,再是默认(有些属性没有标注LoginGroup还是RegisterGroup)
@GroupSequence({LoginGroup.class, RegisterGroup.class, Default.class})
public interface Group{}



高级约束之参数校验





自定义手机号约束注解







用户头像

HeGuang

关注

不要问我捷径在哪里,捷径只在深夜的孤独中 2018.09.28 加入

还未添加个人简介

评论

发布
暂无评论
Java 约束注解