2024. 9. 12. 21:57ㆍ■ SPRING LECTURES/BEGINNER
Spring에서 요청을 처리하는 과정
1. 클라이언트 요청 (Request)
사용자가 웹 브라우저나 애플리케이션에서 특정 URL로 요청을 보냄. 이 요청은 서버의 DispatcherServlet으로 전달됨.
예를 들어, 사용자가 /tasks로 POST 요청을 보내서 새로운 할 일을 생성하려고 한다고 가정해 봄.
2. DispatcherServlet
DispatcherServlet은 Spring의 중앙 서블릿임. 모든 웹 요청을 받아서 적절한 핸들러(Controller)로 라우팅해 주는 역할을 함.
여기서 중요한 점은, 사용자가 보낸 요청을 보고 어떤 컨트롤러가 이를 처리할지 결정해야 한다는 것임. 이 과정에서 Handler Mapping이 사용됨.
3. Handler Mapping
Handler Mapping은 요청된 URL을 분석해, 어떤 컨트롤러가 이 요청을 처리할지 찾음.
예를 들어, 사용자가 /tasks로 요청을 보냈다면, Spring은 어떤 컨트롤러가 이 URL을 처리할지 찾아서 그 정보를 DispatcherServlet에 제공함.
4. Controller 호출
Handler Mapping이 적절한 핸들러를 찾으면, Handler Adapter가 해당 컨트롤러를 호출함.
이 단계에서 사용자의 요청은 실제로 Controller에서 처리됨. 예를 들어, TaskController의 createTask 메서드가 호출되어 새로운 할 일을 생성하는 비즈니스 로직을 처리함.
Controller는 주로 서비스 계층(Service Layer)을 호출해서 비즈니스 로직을 처리하고, 그 결과를 반환함.
5. Service & Repository
Controller는 요청을 처리하기 위해 서비스 계층을 호출함. 여기서 비즈니스 로직이 실행되고, 필요한 경우 데이터베이스와 상호작용함.
Service는 Repository를 통해 데이터베이스에 접근해 데이터를 읽거나, 쓰거나, 수정하거나, 삭제함.
이 부분에서 CRUD 작업이 이루어짐:
- Create: 새로운 데이터를 추가
- Read: 데이터를 조회
- Update: 기존 데이터를 수정
- Delete: 데이터를 삭제
예를 들어, 사용자가 새로운 할 일을 생성하는 요청을 했다면, 서비스 계층은 Repository를 사용해 데이터베이스에 새로운 할 일을 저장함.
6. 모델 (Model)
Controller는 서비스 계층에서 처리된 데이터를 가져온 후, 그 데이터를 Model 객체에 담아 View로 전달함.
이 단계에서 사용자가 요청한 데이터나 결과값이 Model에 담기고, 이 모델은 나중에 뷰(View)에서 사용됨.
모델은 비즈니스 로직의 결과를 담고 있으며, 뷰에서 이 모델 데이터를 사용해 화면에 결과를 출력함.
7. View Resolver
DispatcherServlet은 처리된 결과를 사용자에게 반환하기 위해 어떤 뷰(View)를 사용할지 결정함. 이를 위해 View Resolver가 사용됨.
View Resolver는 Controller가 반환한 view name(뷰 이름)을 보고, 실제로 보여줄 화면을 결정함.
REST API 프로젝트에서는 HTML 페이지 대신 JSON 형식의 데이터를 반환함. 이 경우 뷰는 데이터만 전달함.
8. View (응답)
마지막으로, View는 처리된 결과를 사용자에게 화면으로 전달함.
웹 애플리케이션이라면 HTML 페이지가 될 것이고, REST API라면 JSON 데이터가 될 것임.
DispatcherServlet은 최종적으로 사용자에게 데이터를 응답으로 보내면서 이 요청-응답 과정이 끝남.
전체 흐름 요약:
- 클라이언트가 요청을 보냄
- DispatcherServlet이 요청을 받음
- Handler Mapping이 적절한 컨트롤러를 찾음
- Controller에서 비즈니스 로직을 처리
- Service와 Repository를 통해 데이터 처리
- Model에 결과를 저장
- View Resolver가 어떤 뷰를 보여줄지 결정
- 최종 응답을 사용자에게 전달
백엔드 개발 관점에서의 중요 포인트
- DispatcherServlet은 모든 요청을 받아서 각기 다른 컨트롤러로 요청을 보내는 중앙 조정자 역할을 함.
- Controller는 비즈니스 로직을 처리하기 위해 서비스 계층을 호출하고, 사용자의 요청을 처리함.
- Service와 Repository는 비즈니스 로직과 데이터베이스와의 상호작용을 처리하며, 여기서 CRUD 작업이 이루어짐.
- View는 클라이언트에게 데이터를 전달하는 최종 단계로, 화면에 출력하거나 API 결과로 JSON 데이터를 전달함.
이처럼 Spring MVC와 3계층 아키텍처는 각각의 요청과 비즈니스 로직을 분리해 효율적인 백엔드 시스템을 만들 수 있게 도움.
'■ SPRING LECTURES > BEGINNER' 카테고리의 다른 글
@PathVariable @RequestParam (0) | 2024.09.12 |
---|---|
Exploring Types of Design Patterns (0) | 2024.09.09 |
Understanding of the protocol (0) | 2024.09.09 |
Understanding of the server (3) | 2024.09.09 |
Understanding of the build system (0) | 2024.09.09 |