핸들러 매핑(Handler Mapping)
핸들러 매핑(Handler Mapping)
은 HTTP 요청정보를 이용하여 이를 처리할 핸들러 오브젝트, 즉 컨트롤러를 찾아주는 기능을 가진 DispatcherServlet
의 전략이다.
스프링은 기본적으로 다섯 가지 핸들러 매핑을 제공한다.
- BeanNameUrlHandlerMapping: HTTP 요청 URL과 빈의 이름을 비교하여 일치하는 빈을 찾는다.
- ControllerBeanNameHandlerMapping:
BeanNameUrlHandlerMapping
과 유사하지만 위처럼 빈 이름을 URL 형태로 짓지 않아도 된다는 차이가 있다. - ControllerClassNameHandlerMapping: 빈의 클래스 이름을 URL에 매핑해주는 매핑 클래스이다.
- SimpleUrlHandlerMapping: URL과 컨트롤러 매핑정보를 한곳에 모아놓을 수 있는 전략이다.
- RequestMappingHandlerMapping: @RequestMapping이라는 애노테이션을 이용해 매핑하는 전략이다.
DispatcherServlet
은 init
되는 순간 HandlerMapping
전략들을 등록한다. 스프링 부트의 경우 RequestMappingHandlerMapping
전략이 가장 높은 우선 순위를 가진다.
DispatcherServlet
은 getHandler
함수를 호출하여 등록된 HandlerMapping
전략들의 우선순위 순으로 핸들러를 찾는다.
핸들러 어댑터(Handler Adapter)
핸들러 어댑터(Handler Adapter)
는 핸들러 매핑을 통해 검색된 핸들러 객체를 가지고 이에 맞는 어댑터를 찾는 과정이다. 여기서 어댑터란, 2개 이상의 인터페이스에 스펙이 맞지 않을 때, 중간에 이 스펙이 맞도록 변환해주는 역할을 하는 객체이다.
실행 흐름
실행 흐름은 Handler Mapping
을 통해 Handler
를 조회하고 이를 실행 시킬 Handler Adapter
를 조회한다. 이후 조회 된 Handler Adapter
를 통해 Handler
를 실행한다.
Handler Mapping
으로Handler
조회Handler Adapter
조회Handler Adapter
실행
Comments powered by Disqus.