下面是SpringBoot学习篇之@Valid
与@Validated
的区别的攻略。
一、@Valid
和@Validated
的作用
在SpringMVC中,@Valid
和@Validated
注解全部用于校验参数。使用它们可以大大简化代码和提高代码的可读性。
二、@Valid
和@Validated
的区别
@Valid
是JSR-303/JSR-349规范中的注解,而@Validated
是Spring中自己扩展的注解@Validated
注解比@Valid
注解功能更加强大,支持分组校验、支持级联校验等
三、@Valid
和@Validated
的使用
3.1 @Valid
@Valid
注解要求被注解的参数对象中的属性都必须满足相应的验证规则,如果不满足,则使用BindingResult
获取错误信息。
@PostMapping("/user")
public String addUser(@Valid @RequestBody User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "error"; // 当出现错误时,返回error页面
}
// 如果验证通过,则继续执行业务逻辑
// ...
}
3.2 @Validated
@Validated
允许我们使用分组,而且支持级联校验,在参数校验中,使用了@Validated
注解,比如下面这个例子:
@Data
public class Person {
@NotNull(message = "姓名不能为空", groups = AddGroup.class)
private String name;
@NotNull(message = "年龄不能为空", groups = AddGroup.class)
@Max(value = 120, message = "年龄不能大于120岁", groups = AddGroup.class)
private Integer age;
@Email(message = "邮件格式不正确", groups = ModifyGroup.class)
@NotBlank(message = "邮件不能为空", groups = ModifyGroup.class)
private String email;
@Valid
private School school;
}
@Data
public class School {
@NotBlank(message = "学校名称不能为空", groups = {AddGroup.class, ModifyGroup.class})
private String schoolName;
}
其中,Person
类被注解了@Validated
,即需要进行完整的参数校验,包括分组校验和级联校验。同时,School
类还使用了@Valid
注解,即进行级联校验。
@PostMapping("/person")
public String addPerson(@Validated(value = {AddGroup.class, ModifyGroup.class}) @RequestBody Person person) {
// 如果验证通过,则继续执行业务逻辑
// ...
}
上面的方法中,使用了@Validated
注解,同时指定了验证的分组,即AddGroup.class
和ModifyGroup.class
。这样我们就可以在方法调用时执行对应的验证规则了。
四、总结
通过本篇攻略,我们介绍了@Valid
和@Validated
的作用及其区别,并且使用了两个示例,让大家可以更加轻松地掌握这两个注解的使用方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot学习篇之@Valid与@Validated的区别 - Python技术站