IJY
느리더라도 꾸준히
IJY
전체 방문자
오늘
어제
  • 분류 전체보기 (67)
    • Develop (67)
      • Java (8)
      • Go (0)
      • Test (1)
      • Web (1)
      • HTML, CSS (1)
      • TIL(Today I Learned) (18)
      • SQL (0)
      • Algorithm (27)
      • 회고 (7)
      • Troubleshooting (1)
      • Etc (3)
    • Etc (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • MVC
  • java
  • html
  • BufferedWriter
  • REST Assured
  • recursion
  • Filter
  • web
  • 독후감
  • Class
  • 초기화
  • 프로그래머스
  • 재귀
  • 우테코 온보딩
  • sort
  • instance
  • object
  • 12921
  • EntityTransaction
  • Interceptor
  • 백준
  • 소수 찾기
  • 알고리즘
  • 회고
  • BufferedReader
  • PostConstruct
  • Spring
  • API 예외 처리
  • stream
  • init

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
IJY

느리더라도 꾸준히

SpringMVC DispatcherServlet 동작 방식
Develop/TIL(Today I Learned)

SpringMVC DispatcherServlet 동작 방식

2023. 2. 2. 18:18

SpringMVC의 DispatcherServlet 동작 방식에 대한 내용에 앞서 Front Controller 패턴에 대해서 알아보고 넘어가도록 하자

 

Front Controller 패턴

일단 간단하게 Front Controller 패턴을 적용하지 않는 경우와 적용한 경우에 따른 동작을 그림으로 알아보면 다음과 같다.

Front Controller 패턴 미적용
Front Contoller 패턴 적용

Front Contoller 패턴을 적용한 것과 적용하지 않은 것의 차이는 그림으로 한눈에 파악할 수 있듯 클라이언트의 요청에 하나의 Servlet으로 관리를 하느냐 아니냐의 차이로 볼 수 있다.

그렇다면 왜 Front Controller 패턴을 사용해야 하는가?

  1. 클라이언트의 요청에 대한 입구를 하나로 통일시킬 수 있다.
  2. 그렇기에 공통 처리 부분을 관리하기 편해진다.
  3. 추가적으로 N:N 관계인 Servlet과 Controller가 1:N 관계로 바뀌어 Servlet 사용이 줄어든다.

DispatcherServlet 동작 방식

DispatcherServlet 동작 방식 설명 전 FrontController 패턴을 설명한 이유는 DispatcherServlet이 FrontController 패턴을 사용하였기 때문이다.

즉, 위에서 본 Front Controller 패턴을 사용한 그림에서 Front Controller 부분을 DisaptcherServlet이라는 이름으로 바꾸면 된다.

하지만 위 그림은 정말 간단하게 표현한 것이고, 좀 더 자세히 표현을 한다면 다음과 같다.

DispatcherServlet 동작 흐름 (출처 : 정부전자프레임워크)

위 DispatcherServlet의 동작을 간단하게 나열한다면 다음과 같다. (예외 사항은 제외)

  1. 클라이언트의 요청을 DispatcherServlet이 받는다.
  2. HandlerMapping을 통해 Handler를 조회한다.
  3. Handler를 통해 HandlerAdaptor를 조회한다.
  4. HandlerAdaptor를 통해 Controller(비즈니스 로직)를 호출하고 ModelAndView를 반환받는다.
  5. ViewResolver를 통해 ModelAndView를 View로 렌더링 한다.
  6. 이를 클라이언트에게 반환한다.

출처

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
    'Develop/TIL(Today I Learned)' 카테고리의 다른 글
    • 트랜잭션 스크립트 패턴과 도메인 모델 패턴
    • SpringBoot 기준 log 정리
    • [2022.06.10] Instagram 스키마 디자인
    • [2022.05.24] 자료구조/알고리즘 - 재귀
    IJY
    IJY
    개발 관련 공부한 내용을 정리하는 블로그입니다. 느리더라도 꾸준히 포스팅을 하려고 노력합니다.

    티스토리툴바