Можно ли использовать собственный валидатор Spring для проверки правильности ввода метода так же, как ввод метода контроллера в MVC? - PullRequest
1 голос
/ 22 октября 2019

У меня есть собственный валидатор 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 Очевидно, я могу ввести валидатор и вызвать его напрямую, но это не то, что я хочу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...