SpringMVC의 DispatcherServlet 동작 방식에 대한 내용에 앞서 Front Controller 패턴에 대해서 알아보고 넘어가도록 하자
Front Controller 패턴
일단 간단하게 Front Controller 패턴을 적용하지 않는 경우와 적용한 경우에 따른 동작을 그림으로 알아보면 다음과 같다.
Front Contoller 패턴을 적용한 것과 적용하지 않은 것의 차이는 그림으로 한눈에 파악할 수 있듯 클라이언트의 요청에 하나의 Servlet으로 관리를 하느냐 아니냐의 차이로 볼 수 있다.
그렇다면 왜 Front Controller 패턴을 사용해야 하는가?
- 클라이언트의 요청에 대한 입구를 하나로 통일시킬 수 있다.
- 그렇기에 공통 처리 부분을 관리하기 편해진다.
- 추가적으로 N:N 관계인 Servlet과 Controller가 1:N 관계로 바뀌어 Servlet 사용이 줄어든다.
DispatcherServlet 동작 방식
DispatcherServlet 동작 방식 설명 전 FrontController 패턴을 설명한 이유는 DispatcherServlet이 FrontController 패턴을 사용하였기 때문이다.
즉, 위에서 본 Front Controller 패턴을 사용한 그림에서 Front Controller 부분을 DisaptcherServlet이라는 이름으로 바꾸면 된다.
하지만 위 그림은 정말 간단하게 표현한 것이고, 좀 더 자세히 표현을 한다면 다음과 같다.
위 DispatcherServlet의 동작을 간단하게 나열한다면 다음과 같다. (예외 사항은 제외)
- 클라이언트의 요청을 DispatcherServlet이 받는다.
- HandlerMapping을 통해 Handler를 조회한다.
- Handler를 통해 HandlerAdaptor를 조회한다.
- HandlerAdaptor를 통해 Controller(비즈니스 로직)를 호출하고 ModelAndView를 반환받는다.
- ViewResolver를 통해 ModelAndView를 View로 렌더링 한다.
- 이를 클라이언트에게 반환한다.
출처
DispatcherServlet 동작 흐름 그림 : 정부전자프레임워크
'Develop > TIL(Today I Learned)' 카테고리의 다른 글
트랜잭션 스크립트 패턴과 도메인 모델 패턴 (0) | 2023.02.14 |
---|---|
SpringBoot 기준 log 정리 (0) | 2023.02.02 |
[2022.06.10] Instagram 스키마 디자인 (0) | 2022.07.25 |
[2022.05.24] 자료구조/알고리즘 - 재귀 (0) | 2022.07.25 |
[2022.05.23] 모의 기술 면접 (0) | 2022.07.25 |