Получить доступ

Какой паттерн реализуют цепочка сервлетных фильтров и фильтр-цепочка Spring Security?

MiddleПаттерны проектированияSpring Security
Коротко

Chain of Responsibility: запрос идёт по звеньям, и каждое решает, обработать ли его и передавать ли дальше (chain.doFilter). Возможность прервать цепочку — отличие от декоратора, который всегда делегирует.

  • Spring Security: аутентификация, авторизация, CSRF — звенья одной цепочки
  • Также: интерсепторы HTTP-клиентов, middleware
  • Порядок звеньев критичен

А ещё Звено может и изменить запрос, и обработать ответ на обратном пути

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Каждый фильтр решает сам, вызывать ли chain.doFilter дальше — именно возможность прервать обработку отличает этот паттерн от декоратора, который всегда делегирует. В Spring Security звенья цепочки — аутентификация, авторизация, CSRF. Тот же паттерн у интерсепторов HTTP-клиентов и middleware.

Что хотят услышать

  • Название и механизм.
  • Отличие от декоратора.

Частые ошибки

  • Путать с декоратором: у декоратора нет права остановить вызов.
  • Забывать, что порядок звеньев в цепочке значим.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Chain of Responsibility
  • ✗Decorator
  • ✗Mediator
  • ✗Template Method

Что спросят дальше

  • Чем фильтр отличается от интерсептора в Spring MVC?
  • Почему порядок фильтров в Spring Security важен?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем