inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

ArchUnit을 이용한 슬라이스 의존 관계 검증

EmailSender 관련 문의

42

hack4569

작성한 질문수 3

0

안녕하세요.
강의 유익하게 잘 듣고 있습니다^^

한가지 문의 사항이 있습니다. Member.required.EmailSender 를 만약 instructor에서도 사용한다면 EmailSender를 공통으로 사용할 수 있게 Member 상위 폴더로 빼는게 맞겠죠?

java spring spring-boot jpa 리팩터링 ddd

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

hack4569님, Instructor에서도 이메일 발송 기능을 사용한다면 Member.required.EmailSender를 그대로 참조하게 하기보다는, 특정 도메인에 종속되지 않는 공통 위치로 이동하는 것을 고려할 수 있습니다.

다만 단순히 Member의 상위 폴더로 옮기는 것이 항상 정답은 아닙니다. EmailSender가 여러 애그리거트에서 사용하는 애플리케이션 외부 연동 포트라면 다음처럼 공통 패키지에 둘 수 있습니다.

application
 ├─ member
 │   └─ MemberService
 ├─ instructor
 │   └─ InstructorService
└─ required
    └─ EmailSender

또는 프로젝트의 구조에 따라 다음과 같이 외부 연동 포트임을 드러내는 이름을 사용할 수도 있습니다.

application
 └─ port
     └─ out
         └─ EmailSender

핵심은 EmailSender가 회원(Member)의 개념인지, 아니면 회원·강사 등 여러 기능에서 사용할 수 있는 이메일 발송이라는 애플리케이션 공통 기능인지입니다. 후자라면 Member 패키지에 두면 Instructor가 Member 패키지에 의존하게 되므로, 공통 상위 패키지로 이동하는 편이 의존 방향과 책임 측면에서 더 자연스럽습니다.

다만 Member와 Instructor가 서로 다른 이메일 정책이나 메시지 생성 규칙을 가진다면, 단순히 하나의 EmailSender에 모든 책임을 넣기보다는 각 기능에서 필요한 메일 내용을 만들고 EmailSender는 실제 발송만 담당하도록 분리하는 것도 좋습니다.

관련해서 스프링 빈 등록과 EmailSender의 역할을 다룬 기존 답변을 참고해 보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

재탕문제

0

17

1

재탕문제

0

16

0

지금 강의가 어려우신분 추천드립니다.

0

20

1

파이썬 추가 코드

0

28

1

getOrCreate / Unique? 멱등 처리 질문

1

43

2

기존의 완성된 CRUD의 Build.gradle에 security관련 dependency를 추가하면 문제가 생깁니다.

0

40

2

파킹 페이지와 대기열 큐 질문입니다.

0

32

1

배열 포인터 출력 표시

0

45

1

포인터 증감 또는 값 증감

0

40

1

조회 메서드에서 @Transactional(readOnly=true) 질문

1

37

1

배열 포인터 함수 관련

0

39

1

"폴더를 찾을 수 없습니다." 라는 응답만 계속 나옵니다.

0

41

1

실기 이론 통합 요약본 버전

0

49

2

업캐스팅 3번 문제 예시

0

54

2

CRA ? 질문입니다

0

45

1

[해결됨]마지막 강의 내용 수정 화면이 기능을 못하네요.

0

40

1

[해결됨]부분적으로 화면 이동이 안되는 부분이 있습니다.

0

80

6

조회 메서드 네이밍 질문

0

56

1

핵사고날 아키텍처 기반으로 멀티 모듈 설계 시 질문드립니다..

0

63

2

내부 객체 직접 접근에 관하여.

0

97

2

InvalidCurriculumException DIP 적용 여부 문의

0

69

2

설계 트레이드 오프 링크 접속 안됨

0

137

2

헥사고날 아키텍처와 DDD를 적용할 때, 화면에 강하게 연관된 조회 데이터를 어떻게 다루는 게 좋은지 궁금합니다.

0

182

2

Request DTO에서 Entity를 생성할 때 의존성 방향을 반대로 하면 어떨까요?

0

161

2