@Valid与@Validated

1 @Valid 只能校验java bean的参数。可以作用于方法、参数、属性。可用于属性上做嵌套校验。是java的

2 @Validated 可以作用于方法、参数、类上,不能作用在成员属性上,因此不能实现嵌套校验。有分组功能,可以针对参数使不同的分组有不同的约束。是spring的

3 两者的主要区别是:能否分组校验;能否嵌套校验。

分组校验示例代码:

public ExamLabelCmsVO save(@RequestBody @Validated(IInsertGroup.class) ExamLabelCmsForm form,
                               @ApiIgnore @CurrentCmsUserId long cmsUserId) {
        ExamLabel record = examLabelService.getByName(form.getLabelName());
.......


public class ExamLabelCmsForm {

    @ApiModelProperty("标签ID")
    @NotNull(groups = IUpdateGroup.class)
    @Null(groups = IInsertGroup.class)
    private Long id;
......


import javax.validation.groups.Default;

public interface IUpdateGroup extends Default {
}



import javax.validation.groups.Default;

public interface IInsertGroup extends Default {
}

嵌套校验示例代码:

public class HomeModuleTimeSaveRequest {
  
    @Valid
    @NotEmpty
    @ApiModelProperty("时间段列表")
    private List<HomeModuleTimeInfo> timeList;
}
原文地址:https://www.cnblogs.com/mydesky2012/p/15481758.html