RequestParam的自定义validation不适用于Spring MVC

我无法使用Spring MVC进行自定义validation。 我为它实现了自己的参数和自定义validation器注释(所有都在下面给出),但validation永远不会发生。 任何想法都会非常感激。

调节器

@Validated @RestController public class FooController { @RequestMapping(value = "/somepath", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) @ResponseStatus(HttpStatus.OK) public String get(@CustomParam @RequestParam(String fooParam) { return "Hello"; } } 

自定义请求参数

 @Documented @Constraint(validatedBy = CustomValidator.class) @Target({ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) public @interface CustomParam { String message() default "Wrong!"; Class[] groups() default {}; Class[] payload() default {}; } 

自定义validation器

 @Component public class CustomValidator implements ConstraintValidator { @Override public void initialize(CustomParam param) {} @Override public boolean isValid(String givenParam, ConstraintValidatorContext context) { // some custom validation is here, never enter this method though } } 

似乎我在这里弄错了。 因为我使用Spring Boot,所以它默认使用hibernatevalidation器。 为了解决这个问题,我遵循了这个答案,并通过添加bean来改变我的Spring配置。

 @Bean public Validator validator() { return new LocalValidatorFactoryBean(); } @Bean public MethodValidationPostProcessor methodValidationPostProcessor() { MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor(); methodValidationPostProcessor.setValidator(validator()); return methodValidationPostProcessor; }