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. 회고
이 버전에서 비로소 ‘확장 가능한 프레임워크’의 느낌이 왔다.
프레임워크 설계에서 다형성과 어댑터 패턴이 왜 중요한지 실감했다.
미래에 다른 스타일의 컨트롤러나 애노테이션 기반 처리 방식을 붙일 수 있는 발판이 된다.
'Spring' 카테고리의 다른 글
[Spring] MVC 11편 - 스프링 MVC 구조 완전 이해 (3) | 2025.08.13 |
---|---|
[Spring] MVC 10편 - 프론트 컨트롤러 v1~v5 정리 (1) | 2025.08.12 |
[Spring] MVC 8편 - 프론트 컨트롤러 v4 (0) | 2025.08.12 |
[Spring] MVC 7편 - 프론트 컨트롤러 v3 (2) | 2025.08.12 |
[Spring] MVC 6편 - 프론트 컨트롤러 v2 (0) | 2025.08.12 |