① 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 관점
2) MVC 관점
3) Controller-Service-Repository 관점
👉 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 아님) // 도&모
🔗 https://terasolunaorg.github.io/guideline/1.0.1.RELEASE/en/Overview/SpringMVCOverview.html