1、分组
@Validated:提供了一个分组功能,可以在入参验证时,根据不同的分组采用不同的验证机制。
@Valid:作为标准JSR-303规范,还没有吸收分组的功能。
2、嵌套验证
由于@Valid可以用在成员属性上,所以可以进行嵌套验证
例如有个Item实体
public class Item {
@NotNull(message = "id不能为空")
@Min(value = 1, message = "id必须为正整数")
private Long id;
@NotNull(message = "props不能为空")
@Size(min = 1, message = "至少要有一个属性")
private List<Prop> props;
}
public class Prop {
@NotNull(message = "pid不能为空")
@Min(value = 1, message = "pid必须为正整数")
private Long pid;
@NotNull(message = "vid不能为空")
@Min(value = 1, message = "vid必须为正整数")
private Long vid;
@NotBlank(message = "pidName不能为空")
private String pidName;
@NotBlank(message = "vidName不能为空")
private String vidName;
}
@Validated和@Valid加在方法参数前,都不会自动对参数进行嵌套验证,即Prop类中的注解不生效。
只有在private List props;上加上注解@Valid才能进行嵌套验证,即Prop类中的注解生效。