Commit d7abda7
committed
♻️ refactor: 회원 탈퇴 로직에 Observer 패턴 적용하여 서비스 간 결합도 완화
[문제]
- 기존의 회원 탈퇴(`withdraw`) 로직은 MemberService가 GroupCommandService, ScheduleCommandService 들을 직접 호출하는 구조
- 서비스 간의 의존성이 높아져 코드의 유연성과 확장성이 저하되는 문제 발생
[접근]
Spring의 ApplicationEventPublisher를 사용하여 Observer 패턴을 적용
[변경 사항]
- MemberWithdrawalEvent: 회원 탈퇴 시 발행할 이벤트를 정의
- MemberService: ApplicationEventPublisher를 주입받아, 회원 탈퇴가 발생하면 MemberWithdrawalEvent를 발행하도록 withdraw 메서드를 변경, GroupCommandService와 ScheduleCommandService에 대한 직접적인 의존성을 제거
- Group/ScheduleCommandService: @eventlistener 어노테이션을 사용하여 MemberWithdrawalEvent를 구독하는 메서드를 각 서비스에 추가, 각 서비스는 회원 탈퇴 이벤트를 감지하여 그룹 탈퇴 처리, 일정 관리자 위임 등 관련된 후속 작업을 독립적으로 수행
향후 회원 탈퇴 시 추가적인 작업이 필요할 경우 다른 서비스 코드의 수정 없이 새로운 리스너를 추가하는 것만으로 간단하게 확장할 수 있음1 parent 5aba692 commit d7abda7
File tree
4 files changed
+45
-8
lines changed- src/main/java/com/grepp/spring/app/model
- group/service
- member
- event
- service
- schedule/service
4 files changed
+45
-8
lines changedLines changed: 10 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| |||
38 | 39 | | |
39 | 40 | | |
40 | 41 | | |
| 42 | + | |
41 | 43 | | |
42 | 44 | | |
43 | 45 | | |
| |||
432 | 434 | | |
433 | 435 | | |
434 | 436 | | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
435 | 445 | | |
436 | 446 | | |
437 | 447 | | |
| |||
Lines changed: 16 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
Lines changed: 9 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
8 | 9 | | |
9 | 10 | | |
10 | 11 | | |
| |||
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
| 18 | + | |
17 | 19 | | |
18 | 20 | | |
19 | 21 | | |
| |||
25 | 27 | | |
26 | 28 | | |
27 | 29 | | |
28 | | - | |
29 | | - | |
| 30 | + | |
30 | 31 | | |
31 | 32 | | |
32 | 33 | | |
| |||
75 | 76 | | |
76 | 77 | | |
77 | 78 | | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
83 | 84 | | |
84 | 85 | | |
85 | | - | |
| 86 | + | |
86 | 87 | | |
87 | 88 | | |
88 | 89 | | |
| |||
Lines changed: 10 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
29 | 30 | | |
30 | 31 | | |
31 | 32 | | |
| 33 | + | |
32 | 34 | | |
33 | 35 | | |
34 | 36 | | |
| |||
555 | 557 | | |
556 | 558 | | |
557 | 559 | | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
558 | 568 | | |
559 | 569 | | |
560 | 570 | | |
| |||
0 commit comments