강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

hdh8990님의 프로필 이미지
hdh8990

작성한 질문수

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

회원 애플리케이션의 포트 정의

MemberRegister 질문드립니다.

작성

·

18

0

domain 패키지 안에 activate메서드가 있는데 포트 역할을 하는 MemberRegister 인터페이스에 activate메서드가 또 필요한 이유가 어떤건가요??

activate는 외부로 공개될 필요가 없는거 아닌가용??

답변 1

0

토비님의 프로필 이미지
토비
지식공유자

도메인 모델의 activate()는 도메인이 가진 본질적인 기능을 넣은 것입니다. 반면 MemberRegister라는 헥사고날 애플리케이션의 기능 제공 인터페이스는 이를 클라이언트와 같은 외부 액터에게 제공하기 위해서 선언된 것입니다. 비슷해 보이지만 각각의 책임은 확실하게 구분됩니다. MemberRegister를 구현한 애플리케이션 서비스는 어떤 회원인지 리포지토리를 통해서 도메인 엔티티를 조회하고 엔티티가 가진 activate()를 호출하고, 혹시 실패하는 경우 인터페이스에 약속된 방식으로 예외처리를 해주기도 하죠. 또, active 상태가 되었을 때 추가로 진행해야 할 작업도 여기서 담당합니다. 안내 메일을 보내거나 관리자에게 알림을 주거나 최신 이벤트가 적용할 것이 있는지 확인도 할 수 있겠죠. 물론 핵심은 도메인 모델이 가진 activate()를 호출해서 도메인의 로직을 반영하는 것입니다.

hdh8990님의 프로필 이미지
hdh8990

작성한 질문수

질문하기