验证Spring Controller上的基本类型(String,Integer,...)参数

Cat*_*one 6 java validation spring spring-boot

我已经使用Spring(https://spring.io/guides/gs/validating-form-input/)和利用JSR 303 找到了很多关于输入验证的教程和文档.但是所有这些文档都是关于如何验证a自定义bean(如User,Employer或类似的类).我实际上需要验证一个接受基本类型如String,Integer和Lists的控制器.我的API控制器看起来像

@Override
@RequestMapping(value="/v1/{var:.*}/resource", method = RequestMethod.GET)
public ResponseEntity<Response> readDocuments(
        @PathVariable(value = "var") String param1,
        @RequestParam(value = "param2", required = false, defaultValue = "string1") String param2,
        @RequestParam(value = "param3") List<String> param3,
        @RequestParam(value = "param4", required = false) Integer param4)
    { 
        // do something
    } 
Run Code Online (Sandbox Code Playgroud)

我想在参数上定义一些约束,比如

@Override
@RequestMapping(value="/v1/{var:.*}/resource", method = RequestMethod.GET)
public ResponseEntity<Response> readDocuments(
        @PathVariable(value = "var") String param1,
        @RequestParam(value = "param2", required = false, defaultValue = "string1") String param2,
        @RequestParam(value = "param3") @Size(min = 1) List<String> param3,
        @RequestParam(value = "param4", required = false) @Min(0) @Max(10) Integer param4)
    { 
        // do something
    }
Run Code Online (Sandbox Code Playgroud)

可能吗?如果是,我可以在JSR 303指令后定义自定义注释吗?