[Spring Boot] 클라이언트 요청부터 응답까지

hameee·2023년 12월 12일
0

Spring Boot

목록 보기
1/20
post-thumbnail

📍 클라이언트 요청부터 응답까지

이미지 출처

이미지 출처

DispatcherServlet은 요청을 수신한다.
DispatcherServlet은 적절한 컨트롤러를 선택하는 작업을 HandlerMapping에게 위임한다. HandlerMapping은 요청된 URL에 매핑된 컨트롤러를 선택하고 선택된 핸들러 및 컨트롤러를 DispatcherServlet에 반환한다.
DispatcherServlet은 컨트롤러의 비즈니스 로직 실행 작업을 HandlerAdapter에게 위임한다.
HandlerAdapter는 컨트롤러의 비즈니스 로직을 호출한다.
⑤ 컨트롤러는 1️⃣비즈니스 로직을 실행하고, 2️⃣결과를 모델에 설정하고, 3️⃣뷰의 논리적 이름(컨트롤러에서 반환되는 문자열)을 HandlerAdapter에 반환한다.
DispatcherServlet은 뷰의 이름에 해당하는 뷰를 찾아주는 작업을 ViewResolver에게 위임한다. ViewResolver는 뷰 이름에 매핑된 뷰를 반환한다.
DispatcherServlet은 반환된 뷰에 렌더링 작업을 위임한다.
⑧ 뷰는 모델 데이터를 렌더링하고 응답을 반환한다.

📍 주요 역할

  • HandlerMapping, HandlerAdapter, ViewResolver 관점
  • MVC 관점
  • Controller-Service-Repository 관점

1) HandlerMapping, HandlerAdapter, ViewResolver 관점

  • HandlerMapping: 컨트롤러를 찾아서 반환한다.
  • HandlerAdapter: 비지니스 로직 호출하여 컨트롤러를 동작(로직 실행 위임, 모델 등록, 뷰 이름 반환)하게 한다.
  • ViewResolver: 뷰를 찾아서 반환한다.

2) MVC 관점

  • Controller: 애플리케이션의 흐름을 제어(로직 실행 위임, 모델 등록, 뷰 이름 반환)한다.
  • Model: 컨트롤러로부터 받은 비즈니스 로직 실행 결과(Map 형태)를 저장한다.
  • View: Model을 참조하여 렌더링한다.

3) Controller-Service-Repository 관점

이미지 출처

  • Controller: 애플리케이션의 흐름을 제어(로직 실행 위임, 모델 등록, 뷰 이름 반환)한다.
  • Service: 비즈니스 로직을 실행한다.
  • Repository: DB에서 데이터를 읽거나 쓰는 역할을 한다.

👉 DTO와 Entity

  • DTO(Data Transfer Object): 데이터를 전달하기 위해 사용되는 객체, 특정 작업에 필요한 데이터를 모으는 역할
  • Entity: DB의 특정 테이블과 매핑되는 객체, 데이터의 상태를 나타내는 역할(가공X)

👉 Service, Repository, DTO, Entity와 동일시되는 것

  • Service = BO(Business Object) // 비서
  • Repository = DAO(Data Access Object) = Mapper // 레디아메
  • DTO = VO(Value Object) // 디티vㅣ
  • Entity = Domain = Model(MVC의 Model 아님) // 도&모

References

🔗 https://terasolunaorg.github.io/guideline/1.0.1.RELEASE/en/Overview/SpringMVCOverview.html

0개의 댓글