DDD설계의 꽃, 스프링의 3대장🌷🌷🌷

ggyu_55·2023년 4월 7일
0

메모

목록 보기
14/46

Controller 👉🏻 Service 👉🏻 Repository 패턴


Controller

  • 도메인 서비스를 호출하고 서비스와 애플리케이션 레이어 간에 데이터를 전달하는 역할, 즉 클라이언트와 도메인 사이의 중간 매개체 역할을 수행한다.

  • 클라이언트의 요청을 해석하고 응답하는 작업을 책임진다.
    - 즉, request를 받아서 response를 반환하는 일을 하는 모든 객체가 Controller에 포함된다.

  • 외부에서 사용할 수 있도록 필요한 기능을 노출하는 역할만 함!!
    - 요청받은 작업을 서비스 계층으로 내려보내고, 결과를 다시 클라이언트에 반환하는 일만 함.


Service

  • 모든 비즈니스 로직의 수행을 담당한다.

  • 비즈니스 로직에 접근하기 원한다면, Controller를 통해야 한다.

  • 비즈니스 로직에서 데이터의 불러오기/저장하기 를 필요로 한다면, Repository에 연결해준다.

  • 접근방식에 대해서는 고려하지 않고 필요한 자원을 Repository로 부터 끌어와 작업을 수행한다.
    - Service에 대한 접근은 Controller가 관리할 것이라고 믿고 로직의 구현에만 집중한다는 뜻 !!


Repository

  • 데이터를 저장하고 검색하는 역할을 한다.

  • 어떤 구성 요소가 호출하든 상관없이 요청한 대로만 수행한다.


이와 같이 관심사를 여러 개의 계층으로 명확히 분리함으로써 얻을 수 있는 이점이 있다.

인접한 계층을 모방한 mock 객체를 사용함으로써, 해당 특정 계층의 특정한 관심사만 테스트하기 쉽다는 점!!


예시 (추가예정)


참고 : https://tom-collings.medium.com/controller-service-repository-16e29a4684e5

0개의 댓글