🧑💻
이번에 Spring Boot 공부를 시작했다. 해당 Spring 진영에 요청이 들어왔을 때 프레임워크 내부에서 어떻게 동작하는지 궁금해 알아보고 이해한 대로 정리해보고자 한다.
📚Spring Framework & Spring Boot
이에 대해 이야기하기 전, Spring Framework와 Spring Boot의 차이를 간략하게 이야기하겠다.
Spring Framework는 Java 기반 웹 프레임워크이고, Spring Framework위에 구축된 Spring Boot는 Spring Framework에는 없는 개발에 필요한 초기 설정이나 Spring Framework와는 다르게 내장 웹 서버가 있어 더 빠르게 개발 및 테스트가 가능한 것이라 보면 된다.
📚 내장 웹 서버가 있으면 왜 개발 및 테스트가 빠를까?
Spring Boot에는 기본적으로 tomcat이라는 내장 웹 서버를 포함하고 있다고 한다. 이 밖에도 Jetty, Undertow 등 내장 웹 서버가 존재하지만 이에 대해서는 언급하지 않고, 내장 웹 서버가 있으면 무엇이 왜 좋은지에 대해서만 이야기해 보겠다.
내장 서버가 있기 때문에 다른 설정을 하지 않아도 개발 중인 웹앱을 실행시켜 구현한 기능이 올바르게 동작하는지를 테스트할 수 있기에 여러 설정을 위한 리소스에 시간을 쏟지 않아도 된다는 것이다. 때문에, 개발 및 테스트가 빠르고 용이한 것이다.
📚 클라이언트로부터 요청이 왔을 때 Spring Framework는 어떤 동작을 할까?
- 처음 클라이언트에서 Spring Boot로 구축한 서버로 요청이 오면 내장 웹 서버인 tomcat이 클라이언트의 요청을 수신한다.
- 이러한 요청을 웹 서버가 Dispatcher Servlet에 전달을 하면, Dispatcher Servlet은 해당 요청을 수행하기 위해 요청에 알맞은 Controller를 확인하는데, 이를 위해 Handler Mapping을 조회하여 알맞은 컨트롤러를 호출한다.
- 호출된 Controller 내에 정의된 비즈니스 로직을 수행하고, 클라이언트에게 응답을 보내준다.
🧑💻 위의 내용은 어떤 요청인지에 따라 Repository를 통해 DB와 데이터를 주고받는 등 상세한 내용이 달라지기는 하지만 클라이언트로부터 요청이 오고 Dispatcher Servelet이 Handler Mapping을 조회하여 Controller를 매핑하고, Controller 내에 정의된 비즈니스 로직을 수행하는 프로세스는 동일하다.
'Spring Boot' 카테고리의 다른 글
Dirty Checking(변경 감지) (0) | 2024.06.11 |
---|---|
벌크성 수정 쿼리를 보낼 때 주의해야 할 점 (0) | 2024.06.11 |
[Spring framework] - Bean이란 무엇인가? (0) | 2024.06.02 |
@Transactional (0) | 2024.05.31 |