참고
- 이 글의 목적은 Python을 사용하던 개발자가 Java/Spring을 공부하며 느낀 구조적 차이점을 기록
- Java/Spring 부분에서 부족하거나 틀린 부분이 있을 수 있으므로 그런 부분은 지적 부탁드리겠습니다.
Spring MVC
- Model, View, Controller 패턴으로 스프링 개발 시 많이 사용
Request(View) → Dispatcher Servlet → Handler Mapping → Handler Adapter → Controller → Service → Entity → Repository
- 요청(Request)이 들어오면 Tomcat과 같은 Servlet Container가 적합한 Dispatcher Servlet(APP) 호출
- Dispatcher Servlet은 요청을 처리하는 Handler들을 Handler Mapping에 보관. 적합한 Handler 선택
- 선택 된 Handler 실행을 Handler Adapter에게 위임
- Handler Adapter에 의해 Some Controller 실행
- 컨트롤러는
비지니스 로직 처리를 위해 Domain Layer인Some Service 호출 - 서비스는 각각의 객체(Entity - Domain Layer)가 능동적으로 처리하게끔 요청
- 객체가 실제 Data Source와 커뮤니케이션을 위하여 Repository Interface 사용
Clean Architecture와 Spring MVC 패턴의 차이
Use Case VS Service
- 둘 다 Domain Layer로 요청에 대한 비지니스 로직을 처리하는 것은 다름이 없음
- 다만 현재 사용 중인 Use Case는 객체에 대한 처리를 위해 해당 객체와 직접 통신하는 것이 아닌 Repository(Persistence Layer)를 통하여 처리
- 실제 Database Table과 Mapping되어 있는 Model(ORM)의 존재는 Use Case에서는 모르고, Repository에서 참조
- ex) UserModel ∈ UserRepository ↔ CreateUserUseCase
- 실제 Database Table과 Mapping되어 있는 Model(ORM)의 존재는 Use Case에서는 모르고, Repository에서 참조
- Spring MVC에서 Service는 객체에 대한 처리를 객체에 직접 요청
- 객체가 능동적으로 처리하며 Data source와 커뮤니케이션이 필요하다면 내부적으로 Repository 호출
Clean Architecture Use Case에서도 Spring MVC Service와 같이 처리 요청을 Entity에게 직접 요청 할 수 있지만 서비스 특징에 맞게끔 변형 한 설계 차이
'자바 개발자되기' 카테고리의 다른 글
추상 클래스와 인터페이스 (0) | 2020.11.04 |
---|---|
Java - Class Loader System과 Static Variables (0) | 2020.11.04 |
Database CASCADE와 OOP (0) | 2020.11.03 |
DTO vs VO (0) | 2020.11.01 |
Clean Architecture와 Spring MVC - 1. 클린 아키텍처 (2) | 2020.11.01 |