Выбор ответа Middle Spring MVC и REST обновлено

Фильтр или интерсептор

Вопрос

Чем servlet-фильтр отличается от HandlerInterceptor?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Фильтр работает до DispatcherServlet, интерсептор знает обработчик. Фильтры часть спецификации сервлетов: оборачивают весь запрос, в том числе статику и ошибки, поэтому там живёт Spring Security, CORS, логирование.

Варианты ответа

  1. Интерсептор выполняется раньше фильтра и может отклонить запрос
  2. Фильтры работают только с GET-запросами, а интерсепторы со всеми
  3. Интерсептор может менять тело ответа после сериализации, а фильтр нет
  4. Фильтр работает до DispatcherServlet, интерсептор знает обработчикправильный ответ

Разбор

Фильтры часть спецификации сервлетов: оборачивают весь запрос, в том числе статику и ошибки, поэтому там живёт Spring Security, CORS, логирование. Интерсептор вызывается DispatcherServlet-ом вокруг найденного HandlerMethod и знает его аннотации. Порядок обратный: сначала фильтры. Тело ответа после записи надёжнее менять как раз фильтром с обёрткой ответа, у интерсептора postHandle для REST вызывается уже после записи тела.

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

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