【问题标题】:@Valid vs @Validated in Spring Boot Rest API @RequestBody [duplicate]Spring Boot Rest API @RequestBody中的@Valid vs @Validated [重复]
【发布时间】:2017-10-18 11:22:32
【问题描述】:

我来自开发 REST API 的 .NET 背景。现在使用 spring boot 处理 java REST 项目。

首先我在控制器@RequestBody 的验证停止工作。在尝试修复它时,我看到了不同的实现方式。那么注释@RequestBody 的正确方法是什么?

@Validated @RequestBody

@Valid @RequestBody

【问题讨论】:

    标签: spring spring-boot


    【解决方案1】:

    两者之间一般没有太大区别,@Valid 来自 JSR-303 标准,@Validated 是弹簧标准。根据spring文档:

    Spring 提供了一个 Validator 接口,可用于在应用程序的所有层中进行验证。在 Spring MVC 中,您可以将其配置为用作全局验证器实例,以在遇到 @Valid 或 @Validated 控制器方法参数时使用,和/或通过 @InitBinder 方法作为控制器内的本地验证器使用。全局和本地验证器实例可以结合起来提供复合验证。

    参考:https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-config-validation

    但是有区别,其中之一是,例如,如果您需要在验证注释中使用group,则需要使用@Validated@Valid 不支持。

    【讨论】:

      【解决方案2】:

      @Valid 在 JSR 规范中,@Validated 来自 Spring 框架。

      当您的程序应该与 EJB/JSR 标准兼容时,请使用 @Valid,否则您可以同时使用两者。

      【讨论】:

      • 考虑添加文档链接
      猜你喜欢
      • 2018-06-16
      • 2022-01-17
      • 2016-07-10
      • 2018-06-23
      • 2019-11-11
      • 2022-01-01
      • 2019-09-11
      • 1970-01-01
      相关资源
      最近更新 更多