SpringMVC - 핸들러 매핑, 핸들러 어뎁터

hangs·2022년 9월 28일
0

컨트롤러가 호출되려면 다음과 같은 2가지가 필요하다.

HandlerMapping(핸들러 매핑)
핸들러 매핑에서 컨트롤러를 찾을 수 있어야한다.

HandlerAdapter(핸들러 어뎁터)
핸들러 매핑에서 찾은 핸들러를 실행할 수 있는 핸들러 어뎁터가 필요하다.


**스프링 부트가 핸들러 매핑과 핸들러 어뎁터를 자동으로 등록한다.**

HandlerMapping

다음과 같은 우선순위를 가진다.

0 = RequestMappingHandlerMapping : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
1 = BeanNameUrlHandlerMapping : 스프링 빈의 이름으로 핸들러를 찾는다.

HandlerAdapter

0 = RequestMappingHandlerAdapter : @RequestMapping 에서 사용
1 = HttpRequestHandlerAdapter : HttpRequestHandler 처리
2 = SimpleControllerHandlerAdapter : Controller 인터페이스(애노테이션 X)

핸들러 매핑도, 핸들러 어댑터도 모두 순서대로 찾고 만약 없으면 다음 순서로 넘어간다.


순서

1.핸들러 매핑으로 핸들러 조회

  • HandlerMapping을 순서대로 실행해서, 핸들러를 찾는다. 해당 HandlerMapping에 의해서 Handler를 반환한다.

2.핸들러 어뎁터 조회

  • HandlerAdapter의 supports()를 호출하여, 해당 핸들러를 처리할 수 있는 어뎁터를 찾는다.

3.핸들러 어뎁터 실행

  • HandlerAdapter는 핸들러를 내부에서 실행하며 결과를 반환한다.

Reference

0개의 댓글