inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

EmailSender 관련 문의

4

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

5

1

업캐스팅 3번 문제 예시

0

17

2

CRA ? 질문입니다

0

15

1

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

0

15

1

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

0

15

6

구글드라이브 접속 불가

0

18

2

2024년2회15~20

0

19

1

낙관적락 질문있습니다.

0

40

1

push pop 설명 되어있는 강의가 몇강인가요?

0

42

1

해당 결제 부분을 포폴에서 테스트 api를 적용에 대한 궁금증

0

36

0

댓글순서부여방식

0

40

1

유비쿼터스 언어와 class name

0

35

1

postgresql 인텔리제이 커뮤니케이션 버전에서는 실행 안되나요?

0

50

2

movablePageCount와 pageSize 상수

0

34

1

JPA와 네이티브 쿼리

0

40

1

aws 계정 생성 질문

1

50

1

Tasklet 배치 관련 내용

0

38

2

조회 메서드 네이밍 질문

0

52

1

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

0

62

2

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

0

91

2

InvalidCurriculumException DIP 적용 여부 문의

0

67

2

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

0

130

2

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

0

177

2

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

0

157

2