DispatcherServlet - главный контроллер который принимает все сообщения и отправляет их выбирая из @RequestMapping.
Spring MVC зависимости(spring-webmvc) - содержит в себе зависимости:
ExceptionHandler - для обрабатывать исключения на уровне отдельного контроллера.
HandlerExceptionResolver - является общим интерфейсом для обработчиков исключений в Spring.
Для удобства валидации необходимо принимать параметры в String и Int значениях. И уже после валидации мапить в нужные классы. Если мы используем подключенные классы, то ошибка при маппинг сразу попадёт в хендлер и мы не сможем ее описать. И с несколькими параметрами которые возвращают один exception, не понятно какой объектов кинул исключение и в хендлере будет сложно обработать exception.
@RequestHeader - для проверки headers на наличие. При отсутствии будет кинуто исключение MissingRequestHeaderException.
Не нужна проверка хедера на null - значение хедера не может быть null.