스프링MVC

핸들러 매핑과 핸들러 어댑터

salmon16 2023. 8. 8. 18:20

스프링 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