Skip to content

DIContainer 도입 및 Presentation의 의존성 주입 방식 변경 #113

@0Hooni

Description

@0Hooni

🤔 작업 배경

  • Presentation layer에서 Domain과 Data에 있는 UseCase와 Repository의 구현체를 사용하고 있는 문제가 있음.
  • 물리적으로 Presentation을 분리하기 위해서는 Presentation layer는 구현체가 아닌 Domain interface에 있는 UseCase, Repository 인터페이스들만 알도록 해야됨.
  • 다만 구현체를 주입해주기 위해 Application layer에서 의존성 주입을 해줘야 됨.
  • Application에서 전부 다 주입해주기에는 Application의 코드가 복잡해지고 가독성이 저하됨
  • 이를 해결하기 위해 DIContainer(Swinject) 혹은 Needle을 도입할 필요가 있음

📝 작업 내용

  • Presentation(View(Controller), Reactor, Model)에 있는 모든 Respository를 제거한다
    • Respository가 아닌 UseCase를 통해 비즈니스 로직을 처리한다
  • Presentation(View(Controller), Reactor, Model)에 있는 모든 구현체를 제거한다.
    • Impl이 아닌 Interface를 주입받도록 처리한다
  • Application부터 시작한 Presentation(View(Controller), Reactor, Model)들에 필요한 의존성을 주입해준다.
    • 이를 위해 Swinject 혹은 Needle을 사용한다.

👀 ETC (추후 개발해야 할 것, 참고자료 등)

  • DIContainer에 의존성을 전부 등록해줬나
  • Persentation에서 다른 Layer의 구현체를 의존하지 않는게 확실한가
  • Presentation에서 의존성 주입이 올바르게 들어갔나
  • 앱이 이전과 같이 동작하나

Metadata

Metadata

Assignees

Labels

🔄 refactor프로덕션 코드 리팩토링, 파일 삭제, 네이밍 수정 및 폴더링🚀 feat새로운 기능을 추가

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions