[Spring] Spring MVC (1)

이연우·2025년 7월 22일

TIL

목록 보기
22/100

🌱 Spring MVC란?

  • MVC 패턴 + 프론트 컨트롤러 패턴 + 어댑터 패턴이 적용된 백엔드 웹 프레임워크
    백엔드 웹 기술의 진화 단계 중 네 번째

🧩 MVC 패턴 구조 (기본 구조)

  1. Controller: 요청 파라미터 처리 + 로직 실행
  2. Model: 결과 데이터 저장
  3. View: Model 데이터 기반 HTML 렌더링

🚦 Spring MVC 핵심 구조
→ 핵심은 DispatcherServlet중앙 관제탑 역할을 수행하는 것!
1. HTTP 요청 수신 (DispatcherServlet)
2. HandlerMapping으로 해당 URL에 맞는 Controller 탐색
3. HandlerAdapter로 알맞은 Controller 호출 가능 여부 확인
4. Handler(Controller) 실행 → ModelAndView 반환
5. ViewResolver로 View 이름 → View 객체 변환
6. View 렌더링 → HTML 응답


🔄 Dispatcher Servlet이란?

  • Spring MVC의 프론트 컨트롤러 역할
  • HttpServlet을 상속하여 작동
  • Spring Boot는 자동으로 / URL에 매핑
  • service() 메서드 호출 → 내부적으로 doDispatch() 동작

> IntelliJ Class Diagram
1. Dispatcher ServletHttpServlet을 상속받아서 사용하며, Servlet의 한 종류
2. Spring Boot는 Dispatcher Servlet을 서블릿으로 자동으로 등록(내장 Tomcat WAS를 실행하면서 등록)하고 모든 URL 경로에 대해서 Mapping → (urlPatterns=”/”)
3. 더 자세한 URL 경로가 높은 우선 순위를 가짐
→ 개발자가 만들 Servlet이 항상 우선 순위가 높아서 실행됨

⚙️ DispatcherServlet 주요 기능

// 핵심 흐름 요약
1. Handler 조회 → getHandler()
2. HandlerAdapter 조회 → getHandlerAdapter()
3. HandlerAdapter 실행 → handle()
4. 결과 처리 → processDispatchResult()
5. View 이름 확인 → resolveViewName()
6. View 렌더링 → view.render()

🧰 Spring MVC의 주요 Interface

  • Spring은 다형성을 통해 유연한 확장이 가능하도록 구성됨

📂 org.springframework.web.servlet 패키지

인터페이스역할 요약
HandlerMappingURL에 맞는 Handler(Controller) 매핑
HandlerAdapterHandler 실행을 돕는 어댑터 역할
ViewResolver논리 View 이름 → 물리 View 객체로 변환
View최종 렌더링 담당

❓ Spring MVC 구조 전부 알아야 할까?

  • ❌ 내부 코드를 전부 이해할 필요는 없음
  • 전체 동작 흐름은 반드시 이해해야 함
    → 유지 보수, 오류 디버깅, 확장 포인트 판단 가능

0개의 댓글