一、@NotEmpty,@NotBlank,@NotNull区别介绍
@NotEmpty:常用于集合,字符串等,不能为空,且长度必须大于0
@NotBlank:用于字符串上,不能为空,且长度必须大于0
@NotNull:字面意思,一般用于基本类型,不为空,但可以长度为0
PS:@NotEmpty不仅可以用于字符串,还可以用于集合,作用范围相较@NotBlank更大,@NotBlank判断某字符串是否不为空且长度不为0且不由空白符(空格)构成
二、@Validated和@Valid的区别
作用范围:
@Validated:
用在类型、方法和方法参数上。但不能用于成员属性(field)。
@Valid:
可以用在方法、构造函数、方法参数和成员属性(field)上。
区别: 在能不能在成员属性上(Valid可以)。Vaildated是在Vaild基础上进行封装的。
提供#分组功能(Validated提供分组)
分组功能是在参数校验注解上加上groups实现,例如:
//需要新增分组接口
public interface IGroupB {
}
//只在分组为IGroupB的情况下进行验证
@Min(value = 18, message = "年龄不能小于18岁"
, groups = {IGroupB.class})
@Min(value = 18, message = "年龄不能小于18岁"
, groups = {UpdateGroup.class, AddGroup.class})
如果需要做参数嵌套校验时,如学校实体类中有一个学生实体类作为属性,这时候如果直接在controller层的参数那里直接使用@Valid或者@Validated的话,无法完成对学生实体类的校验,需要在学生实体类上面加上@Valid的注解才行。
三、其他参数校验注解
![从别人那边引用的:https://blog.csdn.net/weixin_46015018/article/details/122637042](https://img-blog.csdnimg.cn/a31f254b2e24421b98411cfade4fa405.png)