watchlist 상태 조회 시 도메인 경계 처리 방식 선택
상태
승인
후보군
| 방안 | 설명 |
|---|---|
| UseCase에서 WatchlistRepository 직접 주입 | stock UseCase가 watchlist Repository를 직접 참조 |
| WatchlistDomainService 주입 | stock UseCase → watchlist DomainService 경유 호출 |
| BE 전용 조회 서비스(StockQueryService) 신설 | 두 도메인을 조합하는 query 전용 서비스 생성 |
결정
ListStocksUseCase에서 WatchlistDomainService를 주입해 findAll() → symbol set 교차 조회한다.
- watchlist 조회 실패(예외) 시
isInWatchlist = false로 graceful degradation - watchlist DomainService는
@Service이므로 UseCase에서 주입하는 것은 컨벤션 위반 아님
결정 이유
- 도메인 내부 캡슐화 유지 (인터페이스 경유)
- be-code-convention: UseCase는 DomainService만 호출
- Repository 직접 참조는 레이어·도메인 경계 위반(p1)
검토 대안
| 방안 | 기각 이유 |
|---|---|
| UseCase에서 WatchlistRepository 직접 주입 | 레이어·도메인 경계 위반 (be-code-convention p1) |
| BE 전용 조회 서비스(StockQueryService) 신설 | 오버엔지니어링, 현재 규모에서 불필요 |
트레이드 오프
- 득: 컨벤션 준수, 도메인 경계 유지, graceful degradation 적용 용이
- 실: stock → watchlist 크로스 도메인 의존 발생 (DomainService 레벨에서 최소화)