【问题标题】:Does @Valid work without @Validated on @RestController?@Valid 在@RestController 上没有@Validated 是否可以工作?
【发布时间】:2021-02-05 02:23:24
【问题描述】:

在以下博客条目中。

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——并验证该参数。

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

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

【问题讨论】:

    标签: spring spring-boot bean-validation


    【解决方案1】:

    是的,@Valid 将在 @RestController 中没有 @Validated 时工作。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-11
      • 2016-07-10
      • 2019-08-03
      • 2020-08-09
      • 1970-01-01
      相关资源
      最近更新 更多