我来自一个。NET开发REST API的背景。现在正在使用Spring bootjavaREST项目。
首先,我在控制器@Request estBody的验证停止工作。在尝试修复它时,我看到了不同的实现方法。那么注释@Request estBody的正确方法是什么?
@Validated @RequestBody
或
@Valid @RequestBody
它们两者一般没有太大区别,@Valid
来自JSR-303标准,@Valid
是Spring标准。根据Spring文档:
Spring提供了一个Validator接口,可用于应用程序的所有层中的验证。在Spring中MVC您可以将其配置为用作全局Validator实例,在遇到@Valid或@Val的控制器方法参数时使用,和/或通过@InitBinder方法用作控制器中的本地Validator。全局和本地验证器实例可以组合以提供复合验证。
参考:https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-config-validation
但是存在差异,其中之一是例如,如果您需要在验证注释中使用group
,则需要使用@Valid
,它不支持@Valid
。
@Valid在JSR-规范中,@Validedis来自Spring框架。
当您的程序应该与EJB/JSR Standard兼容时,请使用@Valid,否则您可以同时使用两者。