본문 바로가기
안드로이드 프로그래밍/Android

[안드로이드] Hilt에서 @Binds와 @Provides의 차이

by 1chanhue1 2024. 9. 10.

 

@Binds vs @Provides

  • 공통점
    • @InstallIn로 정의된 모듈 내부에서 종속성 주입을 위해 사용된다.
  • @Binds : 인터페이스와 인터페이스의 구현체를 연결하는데에 사용된다.
    • @Binds의 메서드는 추상 메서드여야 한다.고로 abstract 키워드를 요구한다.
    • @Binds 메서드는 동일한 인터페이스에 여러개의 인터페이스 구현체를 연결할 수 없다.
    • 주입될 타입은 인터페이스이다.
  • @Provides : 종속성 객체를 생성, 제공하는 메서드를 정의할 때 사용된다. (@Binds 외의 경우)
    • 종속성을 제공하는데에 의미가 있으므로, 반환값이 존재해야 한다.
    • 복잡한 종속성을 제공하거나 외부 라이브러리를 제공하는데에 사용된다.
    • 주입될 타입은 인터페이스, 클래스 등 다양하다.