[Spring] 스프링 MVC 구조 정리

최대 1 분 소요

스프링 MVC 와 모델 2

스프링 MVC 를 이용하는 이유 : Servlet/JSP 와 개발자의 로직 사이에서 연결 역할을 하기 때문에 HttpServletRequest/HttpServletResponse 등 Servlet/JSP 의 API 를 사용하지 않아도 어노테이션 방식으로 손쉽게 개발이 가능함.

모델 2 : 로직과 화면을 분리



스프링 MVC 의 기본구조

KakaoTalk_20210325_233724076

1 모든 요청은 DispatcherServlet 을 통해서 처리

2,3 HandlerMapping 에서 @RequestMapping 어노테이션이 적용된 컨트롤러 중 Request 의 처리를 담당하는 적절한 컨트롤러를 찾아서 HandlerAdapter 를 통해 해당 컨트롤러를 동작

4 Controller 에서는 실제 Request 를 처리하는 로직을 작성, 해당 Request 를 처리할 Service 를 주입(DI) 받아서 Service 에게 위임한다. 그 후 View 에 전달하는 데이터는 필요에 따라 Model 객체에 담아서 전달하거나 ViewResolver 를 이용해서 다양한 타입의 결과를 반환.

5 ViewResolverController 가 반환한 결과를 어떤 View 를 통해서 처리하는지 해석하는 역할 (servlet-context.xml 에 정의된 InternalResourceViewResolver 등)

6,7 View는 실제로 응답 보내야 하는 데이터를 Jsp 등을 이용해서 생성하는 역할