You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Hilt에서
@Binds
와@Provides
는 모두 의존성을 제공하기 위한 어노테이션이지만, 목적과 사용 방식에서 차이가 있습니다.@Provides
@Provides
는 객체를 생성하고 의존성을 제공하기 위해 사용됩니다.주로 객체 생성에 특정 로직이 필요한 경우에 활용되며, 클래스 생성자 외에 팩토리 메서드 호출이나 추가 초기화 과정을 포함할 수 있습니다.
예를 들어,
Car
객체를 생성할 때Engine
이라는 의존성을 주입하면서 특정 로직을 포함해야 한다면@Provides
를 사용합니다.여기서 말하는 특정 로직은 초기화 로직, 분기처리, 외부 리소스 설정, context 주입 등이 있습니다.
@Binds
반면,
@Binds
는 인터페이스와 구현체 간의 바인딩을 담당합니다.즉, 특정 인터페이스의 구현 클래스를 지정하는 데 사용됩니다.
@Binds
는 추상 메서드를 통해 바인딩을 정의하며, 제공할 클래스의 생성자에@Inject
어노테이션이 있어야 합니다.예를 들어,
Engine
이라는 인터페이스와 이를 구현한DieselEngine
클래스를 연결하려면@Binds
를 사용합니다.주요 차이점
@Provides
는 객체 생성 로직이 필요한 경우에 사용되며 일반 메서드로 정의됩니다.@Binds
는 인터페이스와 구현체를 연결하는 데 사용되며 추상 메서드로 정의됩니다.정리하자면
@Provides
는 객체 생성에 필요한 로직을 처리하고,@Binds
는 인터페이스와 구현체를 연결하여 의존성을 간단하게 관리하는 데 사용됩니다. 이를 적절히 조합하면 효율적이고 유지보수 가능한 코드를 작성할 수 있습니다.Beta Was this translation helpful? Give feedback.
All reactions