소프트웨어를 개발할 때 여러가지 디자인 패턴이 있는데, 그 중 하나인 Model-View-Controller의 앞글자를 딴 MVC 디자인 패턴이다.
소프트웨어를 구성하는 요소를 역할별로 Model, View, Controller로 구분한다.
이러한 구조를 통해 코드의 재사용성과 유지보수성을 높이고 협업을 수월하게 한다.
공식
쉽게 말해서 MVC 패턴을 적용한 Spring은 HTTP 요청을 효율적으로 처리한다는 것이다.
공식 문서에 다음과 같이 써있다. "중앙에 있는 DispatcherServlet이 요청을 처리하기 위한 공유 알고리즘을 제공하는 Front Controller 패턴을 중심으로 설계되어 있으며 이 모델은 유연하고 다양한 워크 플로우를 지원합니다. "
Servlet은 자바를 이용하여 웹 페이지를 동적으로 생성하는 프로그램이다. Servlet은 다음과 같이 동작한다.
1. Client의 API 요청
2. Servlet이 요청을 받고 Request, Response 객체 생성
3. 정보를 통해 어떤 Servlet에 대한 요청인지 파악
4. 해당 Servlet에서 service 메서드 호출, 브라우저의 요청 메소드(Get, Post, Put..)에 따라 해당 메서드 호출
5. 반환된 결과를 반환하거나 동적 페이지를 생성한 뒤 Response 객체에 응답을 담아 Client에 반환
6. 객체 소멸
근데 위에서 적은 6개의 동작을 위해서 직접 Servlet 클래스를 구현해야 하는데, Spring은 이를 해결하고자 DispatcherServlet를 사용해서 API 요청을 효율적으로 처리한다.
