Dagger2를 알아보자 – 기본편
Dagger2를 알아보자 – Scope
Dagger2를 알아보자 – Injection의 종류
Dagger2를 알아보자 – Qualifier (You’re here)
Dagger2를 알아보자 – Binding
Dagger2를 알아보자 – Multibinding
Dagger2를 알아보자 – SubComponent
Dagger2를 알아보자 – Android
Dagger2를 알아보자 – Testing(준비중)
Dagger2를 알아보자 – Dynamic Feature에 적용하기
Qualifier
때때로 자료형(Type)만으로는 의존성을 식별하기에는 충분하지 않습니다. 예를들어 모듈내에서 두개의 String을 반환하는 @Provide 메소드가 있는 경우입니다.
@Module public class NameModule{ @Provides String provideName1(){ return "Charles"; } @Provides String provideName2(){ return "Runa"; } }
String을 주입받기 위해 컴포넌트에게 요청할때 컴포넌트 입장에서는 어떤 String 객체를 주입해야 할지 애매모호 합니다. 그래서 @Qualifier 애노테이션을 통해 이문제를 해결할 수 있습니다. 기본적으로 javax.inject 패키지에서 제공하는 @Named 애노테이션을 적용한 예제를 살펴보겠습니다.
@Module public class NameModule{ @Provides @Named("me") String provideName1(){ return "Charles"; } @Provides @Named("you") String provideName2(){ return "Runa"; } } class Main{ @Inject @Named("me") String name1; @Inject @Named("you") String name2; ... }
Custom Qualifier 애노테이션을 만들 수도 있습니다.
@Qualifier @Retention(RetentionPolicy.RUNTIME) public @interface CharlesType { String value(); }
0개의 댓글