Home 스프링 핸들러 매핑과 핸들러 어댑터
Post
Cancel

스프링 핸들러 매핑과 핸들러 어댑터

핸들러 매핑(Handler Mapping)

핸들러 매핑(Handler Mapping)은 HTTP 요청정보를 이용하여 이를 처리할 핸들러 오브젝트, 즉 컨트롤러를 찾아주는 기능을 가진 DispatcherServlet의 전략이다.

스프링은 기본적으로 다섯 가지 핸들러 매핑을 제공한다.

  • BeanNameUrlHandlerMapping: HTTP 요청 URL과 빈의 이름을 비교하여 일치하는 빈을 찾는다.
  • ControllerBeanNameHandlerMapping: BeanNameUrlHandlerMapping과 유사하지만 위처럼 빈 이름을 URL 형태로 짓지 않아도 된다는 차이가 있다.
  • ControllerClassNameHandlerMapping: 빈의 클래스 이름을 URL에 매핑해주는 매핑 클래스이다.
  • SimpleUrlHandlerMapping: URL과 컨트롤러 매핑정보를 한곳에 모아놓을 수 있는 전략이다.
  • RequestMappingHandlerMapping: @RequestMapping이라는 애노테이션을 이용해 매핑하는 전략이다.

DispatcherServletinit되는 순간 HandlerMapping 전략들을 등록한다. 스프링 부트의 경우 RequestMappingHandlerMapping 전략이 가장 높은 우선 순위를 가진다.

DispatcherServletgetHandler 함수를 호출하여 등록된 HandlerMapping전략들의 우선순위 순으로 핸들러를 찾는다.

핸들러 어댑터(Handler Adapter)

핸들러 어댑터(Handler Adapter)는 핸들러 매핑을 통해 검색된 핸들러 객체를 가지고 이에 맞는 어댑터를 찾는 과정이다. 여기서 어댑터란, 2개 이상의 인터페이스에 스펙이 맞지 않을 때, 중간에 이 스펙이 맞도록 변환해주는 역할을 하는 객체이다.

실행 흐름

실행 흐름은 Handler Mapping을 통해 Handler를 조회하고 이를 실행 시킬 Handler Adapter를 조회한다. 이후 조회 된 Handler Adapter를 통해 Handler를 실행한다.

  1. Handler Mapping으로 Handler 조회
  2. Handler Adapter 조회
  3. Handler Adapter 실행

참고

This post is licensed under CC BY 4.0 by the author.

Spring MVC 구조

뷰 리졸버

Comments powered by Disqus.