[Spring] Spring MVC란 무엇인가?

2025. 6. 5. 02:57·Spring

MVC 패턴이란?

MVC 패턴은 애플리케이션의 구조를 Model, View, Controller 세 가지 역할로 분리하여 개발하는 디자인 패턴

이 패턴을 사용하면 유지보수성과 확장성이 높아지고, 각 역할에 집중할 수 있어 개발의 효율성이 증가한다.


MVC 패턴을 사용하는 이유

  • 역할 분리를 통해 코드의 가독성과 유지보수성 향상
  • 중복 코드 제거
  • 시스템 간의 결합도 감소
  • 애플리케이션의 확장성과 유연성 증가

MVC 구성 요소

🔹 Model 

  • 데이터와 비즈니스 로직을 담당
  • 요청을 처리한 결과 데이터를 생성하여 View에 전달

🔹 View

  • 사용자에게 보여지는 UI 요소를 담당
  • Model 데이터를 기반으로 화면 출력을 담당
  • HTML, PDF, Excel, XML, JSON 등 다양한 형태 지원

🔹 Controller

  • 클라이언트의 요청을 받아 적절한 비즈니스 로직 호출
  • 처리 결과를 Model에 담고, View에 전달

 MVC1 vs MVC2

📌 MVC1

  • JSP가 View + Controller 역할을 동시에 수행
  • 비즈니스 로직, UI 코드가 혼합되어 가독성 저하
  • 코드 유지보수가 어려움

 

📌 MVC2

  • Controller 역할을 Servlet이 담당
  • JSP는 View 역할만 담당하여 역할 분리
  • 구조가 복잡해질 수 있지만, 유지보수에 유리
  • Spring MVC는 MVC2 구조를 기반으로 발전됨

 


🌱 Spring MVC란?

Spring MVC는 Spring 프레임워크 기반의 웹 애플리케이션 개발을 위한 모듈로, MVC2 구조를 기반으로 동작합니다.

🌀 구조의 핵심: Front Controller 패턴

  • 모든 요청을 DispatcherServlet이 받아 처리 흐름을 제어
  • 실제 처리는 Handler(Controller)에게 위임
  • ViewResolver를 통해 적절한 View로 연결

🔧 Spring MVC 주요 구성 요소

DispatcherServlet Front Controller로 요청을 제어
HandlerMapping 요청에 해당하는 컨트롤러를 탐색
HandlerAdapter 매핑된 컨트롤러 실행 요청
Controller 요청 처리 후 Model 데이터 생성
ModelAndView View 이름과 데이터를 포함하는 객체
ViewResolver View 이름에 해당하는 View 탐색
View 최종 화면 생성 (JSP, HTML 등)

🔄 Spring MVC 동작 흐름

  1. 클라이언트가 서버에 요청
  2. DispatcherServlet이 요청 수신
  3. HandlerMapping을 통해 해당 Controller 탐색
  4. Controller는 Service 호출 → DAO와 통신
  5. 처리된 데이터가 Controller로 반환됨
  6. Controller는 Model에 View 정보와 함께 담아 DispatcherServlet에 전달
  7. ViewResolver가 View 위치를 확인하여 View 전달
  8. DispatcherServlet이 View를 렌더링하여 클라이언트에 응답

 

💡 Spring MVC의 장점

  • 구조적인 요청/응답 처리
  • 비즈니스 로직과 UI 완벽 분리
  • 유연한 확장성과 테스트 용이성

📌 마무리
MVC 패턴은 개발자가 유지보수하기 쉬운 구조를 만들기 위한 기본적인 설계 원칙

Spring MVC는 이러한 구조를 기반으로 발전하여 효율적인 웹 애플리케이션 개발을 가능하게 해주는 프레임워크 꼭 기억하기~!

'Spring' 카테고리의 다른 글

[Spring JPA] 즉시로딩과 지연로딩  (0) 2025.06.21
[Spring] @RestController와 @Controller의 차이  (0) 2025.05.30
'Spring' 카테고리의 다른 글
  • [Spring JPA] 즉시로딩과 지연로딩
  • [Spring] @RestController와 @Controller의 차이
싹난 감자🥔🌱
싹난 감자🥔🌱
개발 블로그
  • 싹난 감자🥔🌱
    감자에 싹이나서 잎이나서
    싹난 감자🥔🌱
  • 전체
    오늘
    어제
    • 분류 전체보기 (43)
      • Spring (3)
      • Java (17)
      • LLM (1)
      • DevOps (4)
      • Algorithm (14)
        • 백준 (4)
        • 프로그래머스 (0)
        • 코드업 (10)
      • Computer Science (3)
        • Operating System (2)
        • Computer Architecture (1)
      • Trouble Shooting 🚀 (0)
      • 회고 & 성장기록 (1)
      • 설계 📐 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘입력
    자바 입력
    Java
    2진수
    구간합
    자바Scanner비교
    자바BufferedReader
    비트
    2차원 배열
    BufferedReader
    Scanner
    배포
    docker
    자바성능
    코딩테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
싹난 감자🥔🌱
[Spring] Spring MVC란 무엇인가?
상단으로

티스토리툴바