2017-05-18 240 views
1

我來自開發REST API的.NET背景。現在使用spring引導來開發java REST項目。@Valid vs @Validated在Spring Boot Rest API @RequestBody

首先我在控制器@RequestBody上的驗證停止工作。在嘗試修復它時,我看到了不同的實現方式。那麼註釋@RequestBody的正確方法是什麼?

@Validated @RequestBody 

@Valid @RequestBody 

回答

0

@Valid處於JSR-規範和@Validated是從彈簧的框架。

當您的程序應該與EJB/JSR Standard兼容時,請使用@VALID,否則您可以同時使用這兩個。

+0

考慮添加文檔鏈接 – matthias

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支持。