Spring

[Spring] MVC 9편 - 프론트 컨트롤러 v5

dev-nadan 2025. 8. 12. 21:27

1. 문제 상황

  • 현재 프론트 컨트롤러는 한 가지 인터페이스(v3, v4 중 하나)만 처리 가능.
  • v3 방식, v4 방식을 동시에 지원하려면?

2. 해결 아이디어

  • 어댑터 패턴 도입.
  • 프론트 컨트롤러는 컨트롤러를 직접 실행하지 않고, 핸들러 어댑터를 통해 실행.
  • 어댑터는 특정 컨트롤러 형태(v3, v4 등)에 맞게 호출 로직 변환.

3. 핵심 구조

public interface MyHandlerAdapter {
    boolean supports(Object handler);
    ModelView handle(HttpServletRequest request, HttpServletResponse response, Object handler);
}

 

  • supports(): 해당 컨트롤러를 처리할 수 있는지 판단.
  • handle(): 실제 컨트롤러 호출 및 ModelView 변환.

4. 장점

  • 새로운 컨트롤러 방식이 추가되어도 어댑터만 만들면 됨.
  • 프론트 컨트롤러 수정 없이 확장 가능.
  • 스프링 MVC도 이 구조를 사용 → @Controller, @RequestMapping 등을 처리.

5. 회고

이 버전에서 비로소 ‘확장 가능한 프레임워크’의 느낌이 왔다.

프레임워크 설계에서 다형성과 어댑터 패턴이 왜 중요한지 실감했다.

미래에 다른 스타일의 컨트롤러나 애노테이션 기반 처리 방식을 붙일 수 있는 발판이 된다.