在@RestController 上没有@Validated 的情况下@Valid 是否工作?

时间:2021-02-05 02:23:24

标签: spring spring-boot bean-validation

在以下博客条目中。

https://www.baeldung.com/spring-boot-bean-validation

作者提到了 Spring Boot 如何使用 @Valid 注解。

@RestController
public class UserController {

    @PostMapping("/users")
    ResponseEntity<String> addUser(@Valid @RequestBody User user) {
        // persisting the user
        return ResponseEntity.ok("User is valid");
    }
    
    // standard constructors / other methods
    
}
<块引用>

当 Spring Boot 找到一个用 @Valid 注释的参数时,它会自动引导默认的 JSR 380 实现——Hibernate Validator——并验证该参数。

在没有 @Valid 的情况下,@RestController@Validated 上是否按预期工作?

那么什么样的立体类型需要用@Validated显式标注?

1 个答案:

答案 0 :(得分:1)

是的,@Valid@Validated 中没有 @RestController 也能工作。

<块引用>

在 Spring 中,我们在方法级别使用 JSR-303 的 @Valid 注解 验证。此外,我们还使用它来标记成员属性 验证。但是,此注释不支持组验证。 组有助于限制验证期间应用的约束。一 特定用例是 UI 向导。在这里,在第一步中,我们可以 有特定的子字段组。在接下来的步骤中,可能有 是属于同一个 bean 的另一个组。因此我们需要申请 每个步骤中对这些有限字段的约束,但 @Valid 没有 支持这个。在这种情况下,对于组级别,我们必须使用 Spring 的 @Validated,它是此 JSR-303 的 @Valid 的变体。这是用 在方法层面。对于标记成员属性,我们继续 使用@Valid 注释。

您可以在此link中阅读更多相关信息。

相关问题