추상적인 멀티 바인딩
멀티 바인딩의 선언은 @MultiBinds 어노테이션을 사용한다.
@MultiBinds 어노테이션은 Module 내의 매개 변수를 갖지 않는 추상 메서드에서 사용할 수 있으며
이 메서드는 변환 타입이 Map 또는 Set 이어야 한다.
@Module
public abstract class MultibindsModules {
@Multibinds
abstract Set<String> strings();
}
이 Module을 Component에 추가하고 선언된 Multi Binding Set을 Component의 메서드로 추가한다.
@Component(modules = MultibindsModules.class)
public interface MultibindsComponent {
Set<String> getStrings();
}
이렇게 만든 Component를 테스트해보자.
public void testDagger() {
MultibindsComponent component = DaggerMultibindsComponent.create();
for (String s : component.getStrings()) {
Log.d(TAG, s);
}
}
실행결과는 아무것도 나오지 않는다. Set이 비어있기 때문이다.
Reference
옥수환, 『아키텍처를 알아야 앱 개발이 보인다.』, 비제이퍼블릭(2020)
'Android' 카테고리의 다른 글
[Dagger2] Assisted Injection (0) | 2021.05.10 |
---|---|
[Dagger2] Multi Binding(2) (0) | 2021.05.03 |
[Dagger2] Multi Binding(1) (0) | 2021.05.02 |