У меня есть собственный валидатор Spring (не ограничитель-валидатор!)
@Component
public class MyValidator implements org.springframework.validation.Validator{
//my fine implementation
}
Я могу использовать этот валидатор в контроллере как
@RestController
public class MyController{
@Autowired private MyValidator myValidator;
@InitBnder
public void binder(WebDataBinder binder){
binder.addValidator(myValidator);
}
@PostMapping
public void whatever(@RequestBody @Valid MyValidatedObject){ // not sure is @Valid needed here
.....
}
}
Это прекрасно работает на уровне контроллера из-за ручногорегистрация валидатора в веб-биндер. Теперь я хочу использовать один и тот же валидатор при вводе метода сервиса, а не на уровне контроллера. Если я это сделаю
@Service
@Validated
class MyService{
public void someMethod(@Valid MyValidatedObject input);
}
Валидатор не запущен. Другие аннотации, такие как @Min
или @Max
, работают здесь (генерируя исключение, поскольку MyValidatedObject не является допустимым субъектом для них - но это показывает, что проверка должна быть запущена). Таким образом, кажется, что только ConstrainValidator
одинаковые валидаторы работают здесь из коробки. Как я могу заставить Spring использовать мой собственный валидатор для проверки правильности ввода метода ??
PS Очевидно, я могу ввести валидатор и вызвать его напрямую, но это не то, что я хочу.