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개의 댓글