Back-end/Springboot
[SpringBoot] 스프링 부트의 동작 방식
ljs981026
2023. 5. 2. 15:33
1. 동작 방식
스프링 부트에서 spring-boot-starter-web 모듈을 사용하면 기본적으로 톰캣(Tomcat)을 사용하는 스프링 MVC 구조를 기반으로 동작한다. 일반적인 웹 요청이 들어왔을 때의 스프링 부트의 동작 구조이다.
2. 서블릿이란?
서블릿(Servlet)은 클라이언트의 요청을 처리하고 결과를 반환하는 자바 웹 프로그래밍 기술이다. 서블릿은 서블릿 컨테이너에서 관리하고 서블릿 컨테이너는 서블릿 인스턴스를 생성하고 관리하는 역할 수행하는 주체로서 톰캣은 WAS의 역할과 서블릿 컨테이너 역할을 수행하는 대표적인 컨테이너이다. 서블릿의 특징은 다음과 같다.
- 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리
- 싱글톤 패턴으로 관리
- 멀티 스레딩 지원
3. DispatcherServlet의 동작
- DispatcherServlet으로 요청이 들어오면 핸들러 매핑을 통해 요청 URI에 매핑된 핸들러를 탐색한다. (핸들러는 Controller를 의미)
- 핸들러 어댑터로 컨트롤러를 호출
- 핸들러 어댑터에 컨트롤러의 응답이 돌아오면 ModelAndView로 응답을 가공해 반환
- 뷰 형식으로 리턴하는 컨트롤러를 사용할 때는 뷰 리졸버를 통해 뷰를 받아 리턴
4. 핸들러 매핑
요청 정보를 기준으로 어떤 컨트롤러를 사용할지 선정하는 인터페이스. 핸들러 매핑 인터페이스는 여러 구현체를 가지며, 대표적인 구현체 클래스는 다음과 같다.
- BeanNameUrlHandMapping
- 빈 이름을 URL로 사용하는 매핑 전략
- 빈을 정의할 때 슬래시('/')가 들어가면 매핑 대상 ex)@Bean("/hello")
- ControllerClassNameHandlerMapping
- URL과 일치하는 클래스 이름을 갖는 빈을 컨트롤러로 사용하는 전략
- SimpleUrlHandlerMapping
- URL 패턴에 매핑된 컨트롤러를 사용하는 전략
- DefaultAnnotationHandlerMapping
- 어노테이션으로 URL과 컨트롤러를 매핑하는 방법
참고 문헌: 스프링 부트 핵심 가이드(스프링 부트를 활용한 애플리케이션 개발 실무)
http://www.yes24.com/Product/Goods/110142898
스프링 부트 핵심 가이드 - YES24
입문자의 눈높이에 맞춰 차근차근 따라 하면서 배우는 스프링 부트 입문서!《스프링 부트 핵심 가이드》는 스프링 부트 기반의 애플리케이션을 개발할 때 필요한 기초적인 내용들을 소개하고,
www.yes24.com