본문 바로가기

Android

[Dagger2] Multi Binding(3)

추상적인 멀티 바인딩

멀티 바인딩의 선언은 @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