春季@Valid与@Validated的区别
2022-08-31 07:45:39
Spring支持两种不同的验证方法:Spring验证和JSR-303 Bean验证。两者都可以通过定义一个Spring验证器来使用,该验证器委托给其他委托器,包括bean验证器。目前为止,一切都好。
但是,当注释方法以实际请求验证时,这是另一回事。我可以这样注释
@RequestMapping(value = "/object", method = RequestMethod.POST)
public @ResponseBody TestObject create(@Valid @RequestBody TestObject obj, BindingResult result) {
或者像这样
@RequestMapping(value = "/object", method = RequestMethod.POST)
public @ResponseBody TestObject create(@Validated @RequestBody TestObject obj, BindingResult result) {
在这里,@Valid是javax.validation.Valid,@Validated是org.springframework.validation.annotation.Validated。后者的文档说
JSR-303 的 Valid 变体,支持验证组的规范。设计用于方便使用Spring的JSR-303支持,但不是特定于JSR-303的。
这并没有多大帮助,因为它没有确切地说明它是如何不同的。如果有的话。两者对我来说似乎都很好。