application - infrastructure 두 개의 모듈로 나누었을 때 의존성을 infra에 몰아서 때려박는다
이렇게 함으로써 **의존성의 방향
**이 infra → app 그니까 밖에서 안으로 흐르게 된다 **단뱡향**!
에러 코드랑 exception을 각각의 에그리거트 별로 나누어 놓는다
이렇게 하면 좋은 점이 global에 모든 에러 코드를 놓았을 때와 다르게
어디에서 어떤 에러가 나는지 쉽게
알 수 있기 때문이다
UseCase에 직접 implements 하는거는 api에 놓는 거 같고
그 UseCase에서 DI해서 사용하는 메소드 들들을 spi에 놓는 거 같다
controller는 service에 의존하고 service는 Repository에 의존한다
의존성 방향 controller → service → repository
의존성이 controller에서 service로 흐른다는건
controller가 service를 사용하는거고 controller가 service에 의존하는거임
<aside> 💡 웹 어댑터 = 컨트롤러
웹 어댑터(컨트롤러)
→ 애플리케이션 계층(서비스)
</aside>