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 동작 흐름
- 클라이언트가 서버에 요청
- DispatcherServlet이 요청 수신
- HandlerMapping을 통해 해당 Controller 탐색
- Controller는 Service 호출 → DAO와 통신
- 처리된 데이터가 Controller로 반환됨
- Controller는 Model에 View 정보와 함께 담아 DispatcherServlet에 전달
- ViewResolver가 View 위치를 확인하여 View 전달
- DispatcherServlet이 View를 렌더링하여 클라이언트에 응답

💡 Spring MVC의 장점
- 구조적인 요청/응답 처리
- 비즈니스 로직과 UI 완벽 분리
- 유연한 확장성과 테스트 용이성
📌 마무리
MVC 패턴은 개발자가 유지보수하기 쉬운 구조를 만들기 위한 기본적인 설계 원칙
Spring MVC는 이러한 구조를 기반으로 발전하여 효율적인 웹 애플리케이션 개발을 가능하게 해주는 프레임워크 꼭 기억하기~!
'Spring' 카테고리의 다른 글
| [Spring JPA] 즉시로딩과 지연로딩 (0) | 2025.06.21 |
|---|---|
| [Spring] @RestController와 @Controller의 차이 (0) | 2025.05.30 |