Controller Interface
package com.example.springbasicmvc.controller;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
// Spring Bean 이름을 URL로 설정
@Component("/example-controller")
public class ExampleController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("example-controller가 호출 되었습니다.");
return null;
}
}
http://localhost:8080/example-controller 로 HTTP 요청을 하게 되면 응답결과가 반환된다.



Handler Mapping
Handler Adapter
→ Controller Interface를 실행할 수 있는 Handler Adapter를 찾고 실행한다.
Spring Boot의 Handler Mapping, Handler Adapter
Handler Mapping
→ Spring Bean의 이름으로 핸들러를 찾을 수 있는 핸들러 매핑이 필요하다.
Handler Adapter
→ Controller Interface를 실행할 수 있는 Handler Adapter를 찾고 실행한다.
HttpRequestHandler로 알아보는 Spring MVC 동작 순서
- 예시 코드
// 인터페이스
public interface HttpRequestHandler {
void handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException;
}
// 구현체
@Component("/request-handler")
public class ExampleRequestHandler implements HttpRequestHandler {
@Override
public void handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("request-handler Controller 호출");
// 구현 로직
}
}
- Postmasn

- 출력결과

1.HandlerMapping으로 핸들러 조회
HandleAdapter의 supports()를 우선순위 순서대로 호출
HttpRequestHandlerAdapter HttpRequestHandler Interface를 지원한다

HttpRequestHandlerAdapter.handle()

