스프링 MVC 구조에 핸들러 매핑과 핸들러 어댑터에 대해 더 살펴보자
과거에 주로 사용했던 컨트롤러로 핸들러 매핑과 어댑터를 이해해 보자
public interface Controller {
ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse
response) throws Exception;
}
@Component("/springmvc/old-controller")
public class OldController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.out.println("OldController.handleRequest");
return null;
}
}
OldController는 /springmvc/old-controller라는 이름의 스프링 빈으로 등록되었다.
빈의 이름으로 URL을 매핑할 것이다.
이 컨트롤러가 호출되려면 2가지가 필요하다
핸들러 매핑에서 이 컨트롤러를 찾을 수 있어야 한다.
핸들러에 맞는 핸들러 어댑터가 필요하다.
스프링은 이미 많은 핸들러와 핸들러 어댑터를 구현해 두었다.
핸들러 맵핑과 핸들러 어댑터의 우선순위를 간단하게 살펴보자 아래보다 실제로는 더 많다.
HandlerMapping
0 : RequestMappingHandlerMapping : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
1 : BeanNameUrlHandlerMapping : 스프링 빈의 이름으로 핸들러를 찾는다
HandlerAdapter
0 : RequestMappingHandlerAdapter : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
1 : HttpRequestHandlerAdapter : HttpRequestHandler 처리
2 : SimpleControllerHandlerAdapter : Controller 인터페이스(애노테이션 X, 과거에 사용) 처리
OldController의 경우 스프링 빈이름으로 핸들러를 찾아야 하기 때문에 빈 이름으로 매핑해주는 BeanNameUrlHandlerMapping이 핸들러로 사용된다.
핸들러 어댑터는 SimpleControllerHandlerAdapter가 선택되게 된다.
이런 과정을 거치게 된다.
출처 : 스프링MVC 1편 - 백엔드 웹 개발 핵심 기술 김영한
'스프링MVC' 카테고리의 다른 글
스프링 MVC 시작하기 (0) | 2023.08.10 |
---|---|
뷰 리졸버 (0) | 2023.08.08 |
스프링 MVC 구조 이해 (0) | 2023.08.08 |
MVC 프레임워크 구현해 보기 (0) | 2023.08.07 |
MVC패턴 (0) | 2023.08.04 |