티스토리 뷰

728x90

Spring MVC는 다른 대부분의 MVC 패턴이 그러하듯 디자인 패턴 중 Front controller pattern을 적용하여 구현되어 있다.

 

Front controller pattern은 한 요청이 들어오면 그 요청에 대한 응답을 할때까지 필요한 작업의 모든 것을 관장하는 역할을 하는 controller를 메인으로 두고 작업을 처리하는 패턴이다.

 

'요청이 들어오면 응답이 나갈 때까지 작업이 진행된다'를 들으면 바로 떠오르는 단어가 하나 있을 것이다. Blocking IO. Spring MVC는 Blocking IO로 동작한다. 그렇기 때문에 각 요청마다 요청을 처리해줄 스레드를 만드는 것이고 이 처리를 좀 더 효과적으로 하기 위해 Thread Pool이 필요하게 되었고 IO heavy한 아키텍처에서는 MVC의 구조적 한계로 인해 Event Driven Architecture인 Webflux라는 Non-Blocking IO가 탄생하게 되었다.

 

DispatcherServlet 동작 순서

 

  1. Client로부터 request가 들어오면 가장 먼저 WAS(e.g. Tomcat)에 의해 요청이 처리되어 Servlet 객체 (HttpServletRequest)가 생성된다.
  2. Security filter chain과 같은 filter는 여기 WAS와 DispatcherServlet 사이에서 동작한다.
  3. WAS에 의해 생성된 Servlet 객체는 DispatcherServlet으로 넘어간다.
  4. 해당 Servlet을 적절하게 처리할 수 있는 Controller를 찾기 위해 Handler에 List 구조로 저장되어 있는 값을 돌며 URL과 Method에 맞는 Controller를 찾아낸다.
  5. DispatcherServlet에서는 Controller에 요청을 위임하고 View name과 Model을 받아온다. (요청을 받고 Model을 보내는 이 과정이 개발자가 구현하는 부분)
  6. DispatcherServlet는 Controller가 받아온 View name을 View resolver에게 보내 어떤 식으로 렌더링을 해야할지 정한다. (Thymeleaf, JSP, Freemarker 등)
  7. DispatcherServlet는 6번에서 정해진 View에 Model을 보내 Client에게 보낼 HttpServletResponse를 생성하고 이를 return하면서 해당 스레드의 태스크가 끝이 난다.

 

레퍼런스

https://javarevisited.blogspot.com/2017/06/how-spring-mvc-framework-works-web-flow.html

 

How Spring MVC Framework works? How HTTP Request is processed?

A blog about Java, Programming, Algorithms, Data Structure, SQL, Linux, Database, Interview questions, and my personal experience.

javarevisited.blogspot.com

https://galid1.tistory.com/526

 

SpringMVC - Spring MVC 동작원리 - 4(DispatcherServlet의 ResponseBody 응답 과정, HandlerMapping, HandlerAdapter)

Spring - Spring MVC 동작원리 - 3(DispatcherServlet이란 - 2) DispathcerServlet이란? 2번째 포스팅입니다. 저번 시간에는 Servlet Project에 DispatcherServlet 을 매핑하고, 모든 요청을 DispatcherServlet 에..

galid1.tistory.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함