DispatcherServlet

황세호·2021년 9월 20일
0

Spring

목록 보기
3/3

DispatcherServlet 초기화

  • 다음의 특별한 타입의 빈들을 찾거나, 기본 전력에 해당하는 빈들을 등록한다.
  • HandlerMapping : 핸들러를 찾아주는 인터페이스
  • HandlerAdapter : 핸들러를 실행하는 인터페이스
  • HandlerExceptionResolver
  • ViewResolver

DispatcherServlet 동작 순서

  1. 요청을 분석한다. (로케일, 테마, 멀티파트 등)

  2. 요청을 처리할 핸들러를 찾는다.

  3. 해당 핸들러를 실행할 수 있는 핸들러 어댑터를 찾는다.

  4. 찾아낸 핸들러 어댑터를 사용해서 핸들러의 응답을 처리한다.

  5. 예외가 발생했다면, 예외 처리 핸들러에 요청 처리를 위임한다.

  6. 핸들러의 리턴값을 보고 어떻게 처리할지 판단한다.

    • 뷰 이름에 해당하는 뷰를 찾아서 모델 데이터를 렌더링한다.
    • @ResponseEntity가 있다면 Converter를 사용해서 응답 본문을 만든다.
  7. 최종적으로 응답을 보낸다.

스프링 MVC 동작원리 정리

DispatcherServlet 초기화

  • 특정 타입에 해당하는 빈을 찾는다.
  • 없으면 기본 전략을 사용한다. (Dispatcher.properties에 기반하여)

스프링 부트를 사용하지 않는 스프링 MVC

  • 서블릿 컨테이너에 등록한 웹 애플리케이션에 Dispatcher 서블릿을 등록한다.

    • web.xml에 서블릿 등록
    • 또는 WebApplicationInitializer에 자바 코드로 서블릿 등록
  • 세부 구성 요소는 빈 설정하기 나름

스프링 부트 스프링 MVC

  • 자바 애플리케이션에 내장 톰캣을 만들고 그 안에 DispatcherServlet을 등록한다.

    • 스프링 부트 자동 설정이 자동으로 해줌.
  • 스프링 부트의 주관에 따라 여러 인터페이스 구현체를 빈으로 등록한다.

profile
Developer

0개의 댓글