Spring
[Spring] 스프링 MVC와 스프링 MVC 구조
sayho
2022. 1. 18. 16:48
스프링 MVC
스프링 MVC 패턴은 비즈니스 로직과 뷰 로직을 분리하기 위해 탄생하였다.
- Model : 모델은 데이터를 주고받기 위해 사용한다.
- View : 필요한 데이터를 Model로 받아 화면 기능에만 집중하는 역할을 한다.
- Controller : 뷰에서 필요한 데이터를 비즈니스 로직을 실행하여 가져오는 역할을 한다. 모델에 데이터를 담아 뷰에게 전달한다
스프링 MVC 구조

- 사용자의 요청을 DispatcherServlet을 통해 받은 후 핸들러 매핑(HandlerMapping)을 통해 요청 URL에 매핑되는 컨트롤러를 조회한다. 핸들러 매핑은 요청과 적합한 컨트롤러(핸들러)를 선택 후 DispatcherServlet에게 전달한다.
- DispatcherServlet은 컨트롤러를 리턴받고 컨트롤러에 대한 실행을 핸들러 어댑터에게 요청한다.
- 핸들러 어댑터는 비즈니스 로직을 실행한 후 결과를 ModelAndView에 담아 DispatcherServlet에게 리턴한다.
- DispatcherServlet은 ViewResolver을 호출하여 반환할 view를 선택하고 View 객체에게 응답 결과 생성을 요청한다.
HandlerMapping : 핸들러 매핑
핸들러 매핑은 스프링 빈의 이름으로 핸들러를 찾을 수 있다.
- RequestMappingHandlerMapping : @RequestMapping 설정이 되어있는 컨트롤러를 찾는다.
- BeanNameUrlHandlerMapping : RequestMappingHandlerMapping 로 핸들러를 찾을 수 없는 경우 BeanNameUrlHandlerMapping 을 이용하여 핸들러를 선택한다.
HandlerAdapter : 핸들러 어댑터
핸들러 매핑으로부터 받은 핸들러를 실행시키기 위해서는 핸들러 어댑터가 필요하다.
- RequestMappingHandlerAdapter : 애너테이션 기반의 컨트롤러인 @RequestMapping에서 사용한다.
- HttpRequestHandlerAdapter : HttpRequestHandler 처리
- SimpleControllerHandlerAdapter : Controller 인터페이스 처리