Что такое HandlerMapping в Spring MVC?

«Что такое HandlerMapping в Spring MVC?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HandlerMapping — это интерфейс в Spring MVC, который определяет, какой контроллер (обработчик) должен обработать входящий HTTP-запрос на основе его атрибутов, таких как URL, HTTP-метод или заголовки.

Основные реализации:

  • RequestMappingHandlerMapping — используется по умолчанию для контроллеров, помеченных аннотациями @RequestMapping, @GetMapping, @PostMapping и т.д.
  • SimpleUrlHandlerMapping — позволяет явно сопоставлять URL-шаблоны с бинами-обработчиками через конфигурацию (например, XML).

Пример с @GetMapping (использует RequestMappingHandlerMapping):

@Controller
public class MyController {
    @GetMapping("/hello")
    public String hello() {
        return "greeting";
    }
}

Пример XML-конфигурации SimpleUrlHandlerMapping:

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <prop key="/oldpath">oldControllerBean</prop>
        </props>
    </property>
</bean>

Почему это важно: Механизм HandlerMapping является ключевым для маршрутизации запросов в приложении, позволяя отделить логику определения обработчика от самого процесса обработки.