(숫자는 우선순위를 의미)
0 = RequestMappingHandlerMapping → @RequestMapping이라는 애노테이션을 이용해 매핑하는 전략
1 = BeanNameUrlHandlerMapping → HTTP 요청 URL과 스프링 빈의 이름을 비교하여 일치하는 빈을 찾는다.
0 = RequestMappingHandlerAdapter → 어노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
1 = HttpRequestHandlerAdapter → HttpRequestHandler 처리
2 = SimpleControllerHandlerAdapter → Controller 인터페이스 (어노테이션 X, 과거에 사용 됨) 처리
아래 예시는 Controller 인터페이스를 사용했기 때문에 BeanNameUrlHandlerMapping
와 SimpleControllerHandlerAdapter
가 사용됨
@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;
}
}
public interface HttpRequestHandler {
void handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException;
}
@Component("/springmvc/request-handler")
public class MyHttpRequestHandler implements HttpRequestHandler {
@Override
public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MyHttpRequestHandler.handleRequest");
}
}
참고 Reference