Spring MVC
Spring MVC 란
- Spring 프레임워크에서 제공하는 웹 모듈이다.
- MVC 는 Model-View-Controller 의 약자로, 기본 시스템 모듈을 MVC 로 나누어 구현되어있다.
- Model 은 '데이터' 디자인을 담당한다.
- View 는 '실제로 렌더링되어 보이는 페이지' 를 담당한다.
- ex.
thymeleaf
파일들이 여기에 해당된다.
- Controller 는 사용자의 요청을 받고, 응답을 주는 로직을 담당한다.
- ex. GET 등의 uri 매핑이 여기에 해당된다.
- Spring MVC 모듈을 사용하여, 백엔드 프로그래밍의 기본 프레임워크를 잡는다.
- Web 서버에 특화되어 만들어진 모듈이라, 개발자가 해야할 영역을 더 적게 만들어준다.
- 즉 기존에 Spring 보다 더 깔끔하고 간편하게 개발 가능.
- 별다른 말이 없으면 MVC Model 2 아키텍처를 사용하는 것으로 생각한다.

기본 동작 흐름

기본적인 흐름은 다음과 같다.
사용자 요청 -> 프론트 컨트롤러 -> 핸들러 매핑 -> 핸들러 어댑터 -> 컨트롤러 -> 로직 수행(서비스) ->
컨트롤러 -> 뷰 리졸버 -> 응답(html)
프론트 컨트롤러
컨트롤러 중 맨 앞단에서 유저의 모든 요청을 받는 컨트롤로다.
- 스프링에서는
DispatcherServlet
객체가 이 역할을 한다.
- 요청에 대한 선처리 작업을 한다.
프론트 컨트롤러는 요청을 핸들러 매핑을 통해 어떤 핸들러가 요청을 처리해야하는지 매핑한다.
- 스프링에서
HandlerMapping
객체가 이 역할을 한다.
매핑된 핸들러를 실제로 실행하는 역할은 핸들러 어댑터가 담당한다.
- 스프링에서
HandlerAdapter
객체가 이 역할을 한다.
컨트롤러는 요청을 처리하는 로직을 담고있다.
- Service 단위로 로직을 나누어 모듈화한다.
- Service 에서는 DB에 접근할 수 있는 Repository를 가진다.
뷰 리졸버에서 뷰 파일을 렌더링하여 사용자 응답으로 보낸다.
- 스프링에서
ViewResolver
객체가 이 역할을 한다.