Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),配合BindingResult可以直接提供参数验证结果。
检验Controller入参规范时,@Validated和@Valid在基本验证功能上没有太多区别。但在分组、注解地方、嵌套验证等功能上有所不同:
1. 分组
@Validated:提供分组功能,可以在入参验证时,根据不同的分组采用不同的验证机制。
@Valid:没有分组功能。
2. 注解
@Validated:用在类型、方法和方法参数上。但不能用于成员属性(field)。
@Valid:可以用在方法、构造函数、方法参数和成员属性(field)上。
3. 嵌套验证
一个待验证的pojo类,其中还包含了待验证的对象,需要在待验证对象上注解@valid,才能验证待验证对象中的成员属性。