✍️ 학습 목표
- MVC 패턴 이해하기
- Spring의 MVC
📌 MVC 패턴
스프링은 MVC 패턴을 준수하는 프레임워크이다.
따라서, 스프링의 MVC 패턴을 이해하기 위해서는 먼저 MVC 패턴이 무엇인지 알아야한다.
MVC (Model - View - Controller) 패턴은 소프트웨어 공학에서 사용되는 디자인 패턴이다.
이렇게 각자의 규칙과 역할을 가진 3개의 컴포넌트로 구성된 패턴을 MVC 패턴이라고 한다.
✔️ 모델, Model
애플리케이션의 정보, 데이터, DB 등을 담당하는 컴포넌트이다.
다음과 같은 규칙을 가진다.
- User가 원하는 모든 데이터를 가지고 있어야한다.
- View와 Controller에 대한 어떠한 정보도 알지 말아야한다.
- 변경이 발생하면 변경사항을 처리(수정, 전달 등) 할 수 있어야한다.
✔️ 뷰, View
유저에게 보이는 화면을 담당하는 컴포넌트이다. Model로부터 받은 정보를 토대로 화면에 출력한다.
다음과 같은 규칙을 가진다.
- Model이 가지고 있는 정보를 따로 저장하면 안된다.
- Model과 Controller에 대해서 몰라야 된다.
- 변경이 발생하면 변경사항을 전달 할 수 있어야한다.
✔️ 컨트롤러, Controller
Model과 View를 이어주고 발생하는 이벤트를 처리하는 컴포넌트이다.
다음과 같은 규칙을 가진다.
- Model과 View를 알아야 한다.
- Model과 View의 변경을 감시하고 있어야한다.
✔️ 왜 MVC패턴을 사용할까?
뷰, 모델, 컨트롤러 이 3가지 컴포넌트를 자세히 들여다보면 각각 맡은 역할에 집중할 수 있는 구조로 되어있다.
주방의 모든 구성원이 같이 재료 손질을 하고, 설거지를 하고, 요리를 한다면 동선이 꼬이는 등 다양한 문제가 발생한다.
하지만 역할을 나눠 작업한다면 훨씬 효율적으로 처리할 수 있다.
MVC 패턴도 동일하다. 서로 분리되어 각자의 역할에 집중할 수 있기 때문에 생산성, 유지보수 등 다양한 이점 생긴다.
📌 Spring MVC 패턴
MVC 패턴을 준수하는 스프링 프레임워크는 다음 그림과 같은 흐름으로 작동한다.
여기서 핵심은 FrontController 패턴으로 구현된 DispatcherServlet이다.
✔️ FrontController 패턴
각 컨트롤러의 헤드가 되는 Front Controller를 추가하는 패턴이다.
Front Controller는 각 컨트롤러들의 공통 코드를 처리하고 User의 요청에 맞는 컨트롤러를 찾아서 호출한다.
✔️ Spring MVC의 구성요소
- DispatcherServelt : 받은 요청과 결과를 올바른 객체에 전달해준다.
- Handler Mapping : 요청에 맞는 Controller를 매핑한다.
- Handler Adapter : 요청을 처리할 Controller를 실행시킨다. 컨트롤러 구현은 3가지 방법(Controller Annotation, Controller Interface, HttpRequestHandler Interface)이 있는데, 구현 방법에 구애받지 않기 위해서 Adapter가 존재한다.
- Controller : 받은 요청을 처리한 뒤 DispatcherServlet에 리턴한다.
- ModelAndView : Controller가 처리한 결과와 View 선택에 필요한 정보를 가진 객체이다.
- ViewResolver : 처리한 결과를 넘겨받을 View를 선택한다.
- View : 넘겨받은 결과를 화면에 출력한다.
'Web > Spring' 카테고리의 다른 글
[Spring] AOP (feat. Proxy Pattern) (0) | 2022.09.21 |
---|---|
[Spring] Servlet, 서블릿 (0) | 2022.09.15 |
[Spring] Spring의 DB 접근 기술 (0) | 2022.08.23 |
[Spring] Spring의 핵심 : IoC, DI (23.05.16 updated) (0) | 2022.08.23 |
[Spring] Spring vs Spring Boot (2) (0) | 2022.08.23 |
댓글