Ответ вслух Middle Spring MVC и REST спрашивают часто обновлено

Путь HTTP-запроса в Spring MVC

Вопрос

Опишите, что происходит с HTTP-запросом в Spring Boot приложении от сокета до ответа.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Tomcat принимает соединение и выдаёт запросу поток из пула, по умолчанию до 200. Запрос проходит цепочку фильтров: там CORS, логирование и Spring Security с аутентификацией.

Что должно прозвучать в ответе

  • Tomcat: поток из пула на запрос

  • Фильтры сервлета, Spring Security

  • DispatcherServlet, HandlerMapping, интерсепторы

  • Аргументы: PathVariable, RequestBody через HttpMessageConverter, валидация

  • Метод контроллера, сервис, транзакция

  • Сериализация ответа, обработка исключений в ControllerAdvice

Что могут спросить следом

  • Где лучше делать аутентификацию и почему?
  • Что изменится с виртуальными потоками?

Разбор

Tomcat принимает соединение и выдаёт запросу поток из пула, по умолчанию до 200. Запрос проходит цепочку фильтров: там CORS, логирование и Spring Security с аутентификацией. Затем DispatcherServlet через HandlerMapping находит метод контроллера, вызывает preHandle интерсепторов, а HandlerAdapter собирает аргументы: путь, параметры, тело через Jackson, и запускает валидацию для @Valid. Метод контроллера вызывает сервис, обычно через транзакционный прокси. Результат сериализуется конвертером в JSON. Если вылетело исключение, его обрабатывает @RestControllerAdvice и превращает в ProblemDetail с нужным статусом. Весь путь занимает один поток, поэтому медленные вызовы внутри опасны; с виртуальными потоками это ограничение сильно ослабевает.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.