Controller 👉🏻 Service 👉🏻 Repository 패턴
도메인 서비스를 호출하고 서비스와 애플리케이션 레이어 간에 데이터를 전달하는 역할, 즉 클라이언트와 도메인 사이의 중간 매개체 역할을 수행한다.
클라이언트의 요청을 해석하고 응답하는 작업을 책임진다.
- 즉, request
를 받아서 response
를 반환하는 일을 하는 모든 객체가 Controller
에 포함된다.
외부에서 사용할 수 있도록 필요한 기능을 노출하는 역할만 함!!
- 요청받은 작업을 서비스 계층으로 내려보내고, 결과를 다시 클라이언트에 반환하는 일만 함.
모든 비즈니스 로직의 수행을 담당한다.
비즈니스 로직에 접근하기 원한다면, Controller
를 통해야 한다.
비즈니스 로직에서 데이터의 불러오기/저장하기 를 필요로 한다면, Repository
에 연결해준다.
접근방식에 대해서는 고려하지 않고 필요한 자원을 Repository로 부터 끌어와 작업을 수행한다.
- Service
에 대한 접근은 Controller
가 관리할 것이라고 믿고 로직의 구현에만 집중한다는 뜻 !!
데이터를 저장하고 검색하는 역할을 한다.
어떤 구성 요소가 호출하든 상관없이 요청한 대로만 수행한다.
이와 같이 관심사를 여러 개의 계층으로 명확히 분리함으로써 얻을 수 있는 이점이 있다.
인접한 계층을 모방한 mock 객체를 사용함으로써, 해당 특정 계층의 특정한 관심사만 테스트하기 쉽다는 점!!
참고 : https://tom-collings.medium.com/controller-service-repository-16e29a4684e5