Spring boot Request Life Cycle

:(:(·2025년 3월 21일

5

목록 보기
1/2

Spring boot Request Life Cycle

구조

흐름

  • Filter

    모든 요청에 대한 서블릿 필터가 실행된다. (설정되어있다면)
    이후 모든 요청은 DispatcherServlet으로 전달된다.
  • DispatcherServlet

    받은 요청을 분석한다. (Common Service)

    1. DispatcherServlet은 HandlerMapping 에게 위임하여 요청을 처리할 Handler (Controller)를 찾는다.

    2. HandlerMapping은 요청 URL을 보고 Handler를 찾아 Handler의 이름과 함께 반환한다. (HandlerExecutionChain타입) - handler과 인터셉터 관련 상태를 가지고 있다.

    3. DispatcherServlet은 찾아낸 Handler를 실행할 수 있는 HandlerAdapter 를 찾는다.

    4. 찾아낸 HandlerAdapter 를 사용해 Handler를 실행한다.

    • 실행 전에 전처리, 후처리로 실행해야할 인터셉터 목록을 결정하고 실행
    • Handler를 실행하며 비즈니스 로직 실행
    • Handler의 리턴값: View(뷰의 파일명), Model(비즈니스 로직 처리한 후의 데이터)

    5. DispatcherServlet은 ViewResolver에게 View의 파일명을 전달하고 View 객체를 얻는다.

    • View의 이름에 해당하는 View를 찾는 단계
    • View Resolver 는 전략 객체이며 view name 뿐 아니라 헤더 정보(accept)도 전달된다.
    • View Resolver 는 전달된 정보를 바탕으로 사용자에게 보여줄 View 가 무엇인지 결정한다.

    6. DispatcherServlet 은 View 객체에게 Model 과 함께 화면 표시를 의뢰한다.

    7. View 는 해당하는 뷰를(ex. JSP, Thymleaf..) 호출하며, Model 객체에서 화면 표시에 필요한 정보를 가져와 화면 표시를 처리한다.

    8. DispatcherServlet 은 View 로부터 받은 결과를 클라이언트에게 반환한다.

    9. 요청중 발생하는 예외는 DispatcherServlet가 catch를 해서 처리해준다. (doDispatch)

참조

https://github.com/binghe819/TIL/blob/master/Spring/MVC/Spring%20MVC%20flow.md

0개의 댓글