[REST API] 백엔드에서는 무슨 일이 벌어지고 있을까? - Spring Boot Starters and Autoconfiguration

민지·2024년 3월 10일
0

REST API - Spring Boot

목록 보기
3/27
post-custom-banner

1번. request(http request URL)들은 어떻게 해결되고 있는지?

결론 : SpringBoot가 자동설정해주는 DispatcherServlet을 통해, 모든 request URL을 받아, 각 url에 맞는 컨트롤러를 매핑시켜준다.

Spring MVC - spring의 front controller인 DispatcherServlet에서 처리해준다고 배웠다. (스프링 카테고리에서 해당 글을 찾을 수 있다.)

그 어떤 request url이든, Spring MVC에서 모든 request url은 DispathcerServlet이 처리한다. DispatcherServlet에 모든 request url이 가장 먼저 도착하는 이유는, dispatcherServlet이 루트 url과 mapping되어 있기 때문.
dispatcherServlet이 request를 받으면, 특정 request url에 알맞는 컨트롤러의 메서드와 매핑시켜준다. (/hello-world URL -> @GetMapping(path="/hello-world") 컨트롤러와 매핑시킴)

그럼 어디에서 dispatcherServlet을 설정할까?
dispatherServlet은 Auto Configuration(자동 설정)에 의해 설정된다.
자동 설정은 스프링부트의 주요 특징 중 하나인데, 클래스 경로에 있는 클래스를 기준으로 Spring Boot는 자동으로 웹 어플리케이션 혹은 REST API를 빌드한다는 사실을 탐지한다. 이와 동시에 자동으로 dispatherServlet을 설정시킨다.

2번. HelloWorldBean 객체가 JSON으로 어떻게 변환될까?

결론 : @ResponseBody 어노테이션과 JachsonHttpMessageConverters가 Spring Boot에 의해 자동 설정되었기에

앞선 포스팅에서 localhost:8080/hello-world-bean url에서 hello world라는 메세지를 JSON 형식으로 Http response를 웹 브라우저에 보여줬었다.

1번에 이어서, /hello-world-bean request url이 dispatcherServlet에 의해, HelloWorldController의 helloWorldBean 메서드에 매핑됐다.

그렇다면 helloWorldBean메서드의 반환값인 HelloWorldBean 자바 빈이 어떻게 JSON 형식으로 변환되었을까? -> @ResponseBody + JachsonHttpMessageConverters 설정


RestController 어노테이션 정의 부분을 보면, @ResponseBody가 이 안에 포함된 것을 확인할 수 있었다.

그럼, HelloWorldBean 자바 객체를 그대로 반환하면, 메세지 변환이 일어난다. 이때, Spring Boot의 자동 설정 기본 변환은 JachsonHttpMessageConverters 에 의해 사용된다.

3번. error 매핑은 어디에서 설정할까?

브라우저에 입력될 때 뜨는 오류 페이지 역시 스프링의 자동 설정결과이다. ErrorMvcAutoConfiguration 클래스에서 작동된다.

4번. spring starter projects를 만들 때, 의존성 주입했던, pom.xml에서 모든 의존성 주입을 확인할 수 있었다.

즉, 스프링 프로젝트의 가장 중요한 2가지 기능인 starter project와 auto configuration(자동 설정) 덕분에 이 모든 일이 가능했다!



참고 및 출처

이 시리즈는 Udemy 강의의 내용을 정리한 것입니다.
https://www.udemy.com/course/spring-boot-and-spring-framework-korean/

profile
배운 내용을 바로바로 기록하자!
post-custom-banner

0개의 댓글