Back-end/Springboot

[SpringBoot] 스프링 부트의 동작 방식

ljs981026 2023. 5. 2. 15:33

1. 동작 방식

스프링 부트에서 spring-boot-starter-web 모듈을 사용하면 기본적으로 톰캣(Tomcat)을 사용하는 스프링 MVC 구조를 기반으로 동작한다. 일반적인 웹 요청이 들어왔을 때의 스프링 부트의 동작 구조이다.

스프링 부트의 동작 구조

2. 서블릿이란?

서블릿(Servlet)은 클라이언트의 요청을 처리하고 결과를 반환하는 자바 웹 프로그래밍 기술이다. 서블릿은 서블릿 컨테이너에서 관리하고 서블릿 컨테이너는 서블릿 인스턴스를 생성하고 관리하는 역할 수행하는 주체로서 톰캣은 WAS의 역할과 서블릿 컨테이너 역할을 수행하는 대표적인 컨테이너이다. 서블릿의 특징은 다음과 같다.

  • 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리
  • 싱글톤 패턴으로 관리
  • 멀티 스레딩 지원

3. DispatcherServlet의 동작

 

  1. DispatcherServlet으로 요청이 들어오면 핸들러 매핑을 통해 요청 URI에 매핑된 핸들러를 탐색한다.                         (핸들러는 Controller를 의미)
  2. 핸들러 어댑터로 컨트롤러를 호출
  3. 핸들러 어댑터에 컨트롤러의 응답이 돌아오면 ModelAndView로 응답을 가공해 반환
  4. 뷰 형식으로 리턴하는 컨트롤러를 사용할 때는 뷰 리졸버를 통해 뷰를 받아 리턴

4. 핸들러 매핑

요청 정보를 기준으로 어떤 컨트롤러를 사용할지 선정하는 인터페이스. 핸들러 매핑 인터페이스는 여러 구현체를 가지며, 대표적인 구현체 클래스는 다음과 같다.

  • BeanNameUrlHandMapping
    • 빈 이름을 URL로 사용하는 매핑 전략
    • 빈을 정의할 때 슬래시('/')가 들어가면 매핑 대상 ex)@Bean("/hello")
  • ControllerClassNameHandlerMapping
    • URL과 일치하는 클래스 이름을 갖는 빈을 컨트롤러로 사용하는 전략
  • SimpleUrlHandlerMapping
    • URL 패턴에 매핑된 컨트롤러를 사용하는 전략
  • DefaultAnnotationHandlerMapping
    • 어노테이션으로 URL과 컨트롤러를 매핑하는 방법

 

 

 

 

참고 문헌: 스프링 부트 핵심 가이드(스프링 부트를 활용한 애플리케이션 개발 실무)

http://www.yes24.com/Product/Goods/110142898

 

스프링 부트 핵심 가이드 - YES24

입문자의 눈높이에 맞춰 차근차근 따라 하면서 배우는 스프링 부트 입문서!《스프링 부트 핵심 가이드》는 스프링 부트 기반의 애플리케이션을 개발할 때 필요한 기초적인 내용들을 소개하고,

www.yes24.com