@RequestMapping("/hello") @RestController @Api(tags = "HelloWorld 入口") public class HelloWorld { @GetMapping("/world") @ApiOperation(value = "helloWorld") public String helloWorld() { return "hello world!"; } @PostMapping("/test/param") @ApiOperation(value = "testParam") public BaseResponse<String> testParam( @Valid @RequestBody BaseRequest baseRequest ) { return BaseResponse.successResponse("参数校验成功"); } @ApiOperation(value = "testOrderParam") @PostMapping("/test/order") public BaseResponse<String> testOrderParam( @Validated @RequestBody OrderRequest baseRequest ) { return BaseResponse.successResponse("参数校验成功"); } }
上面源码可以看到,testParam接口和testOrderParam两个接口使用的注解不一样,一个是@Valid、另一个是@Validated,两个稍有区别,前者使得当前对象内属性校验生效,如果包含对象属性,则对象属性自身的属性校验无法生效,而后者注释的对象,对象内部配合@Valid可以使得对象内部的对象属性的属性校验规则生效。