Всі реалізації HandlerMapping підтримують перехоплювачі обробників, які приносять користь, якщо потрібно застосувати специфічну функціональність до певних запитів. Наприклад, перевірити наявність основного запиту. Перехоплювачі повинні реалізувати HandlerInterceptor з пакета org.springframework.web.servlet з трьома методами, які мають забезпечити достатню гнучкість для виконання всіх видів попередньої та постобробки:

  • preHandle(..): Перед виконанням фактичного оброблювача

  • postHandle(..): Після виконання оброблювача

  • afterCompletion(..): Після завершення виконання запиту

Метод preHandle(..) повертає булеве значення. Цей метод можна використовувати, щоб перервати або продовжити обробку ланцюжка виконання. Якщо цей метод повертає true, ланцюжок виконання оброблювача продовжується. Якщо він повертає false, DispatcherServlet вважає, що перехоплювач сам обробив запити (і, наприклад, візуалізував відповідне подання), і не продовжує виконання інших перехоплювачів та фактичного оброблювача у ланцюжку виконання.

Також можна зареєструвати їх безпосередньо, використовуючи сетери в окремих реалізаціях HandlerMapping.

Метод postHandle менш корисний при використанні методів, позначених анотацією @ResponseBody, та методів ResponseEntity, для яких повідомлення записується та фіксується всередині HandlerAdapter та перед postHandle. Це означає, що вже буде пізно вносити будь-які зміни до повідомлення, наприклад, додавати додатковий заголовок. Для таких сценаріїв можна реалізувати ResponseBodyAdvice і або оголосити його як бін Advice контролера, або налаштувати його безпосередньо для RequestMappingHandlerAdapter.