[Spring] Spring Boot 동작원리

WOOK JONG KIM·2022년 10월 25일
0
post-thumbnail

서블릿(Servlet) : 클라이언트의 요청을 처리하고 결과를 반환하는 자바 웹 프로그래밍 기술

서블릿 컨테이너 : 서블릿 객체를 싱글톤 패턴으로 관리, 서블릿 객체의 생명 주기 관리

스프룽부트에서 Spring-boot-starter-web 모듈을 사용하면 기본적으로 톰캣을 사용하는 스프링 MVC 구조를 기반으로 동작

Client와 DispatcherServlet 사이에는 서블릿 컨테이너가 존재하며, 톰캣이 WAS의 역할과 서블릿 컨테이너 역할을 수행하는 대표적인 컨테이너

  1. DispatcherServlet으로 요청(HttpServletRequest)이 들어오면 DispatcherServlet은 HandlerMapping으로 요청 URI에 매핑되는 핸들러(컨트롤러) 탐색 후 반환

  2. 핸들러 어댑터로 컨트롤러를 호출한 후, 어댑터에 컨트롤러의 응답이 돌아오면 ModelAndView로 응답을 가공해 반환

  3. View 형식으로 리턴하는 컨트롤러를 사용할때는 뷰 리졸버를 통해 뷰를 받아 리턴

뷰가 없는 REST 형식은 @ResponseBody를 사용하며 MessageConverter를 거쳐 JSON 형태로 반환

핸들러 매핑

요청 정보를 기준으로 어떤 컨트롤러를 사용할지 선정하는 인터페이스

대표적 구현체

  • BeanNameHandlerMapping : Bean이름을 URL로 사용하는 매핑 전략, 빈 정의 시 슬래시 추가 ex)Bean("/hello")

  • ControllerClassNameHandlerMapping : URL과 일치하는 클래스 이름을 갖는 빈을 컨트롤러로 사용

  • SimpleURlHandlerMapping : URL 패턴에 매핑되는 컨트롤러 사용하는 전략

  • DefaultAnnotationHandlerMapping : 어노테이션으로 URL과 컨트롤러를 매칭하는 방법

profile
Journey for Backend Developer

0개의 댓글