2017-01-11 7 views
0

私は2つのRetrofit Servicesが必要な状況があり、それぞれにビジネス実装があります。は、異なる実装を持つ2つのインスタンスを提供し、注入します。 - Dagger 2

@Provides 
    @Singleton 
    @Named("defaultMulhimService") 
    MulhimService provideMulhimService() { 
     return MulhimService.Creator.newMulhimService(); 
    } 

    @Provides 
    @Singleton 
    @Named("MulhimServiceWithCache") 
    MulhimService providesMulhimServiceWithCache(){ 
     return MulhimService.Creator.newMulhimServiceWithCache(mApplication); 
    } 

私はすでにモジュールで複数のインスタンスを異なるために@Named注釈を使用することをお勧めこのanswerを見てんだけど、私は知らない何を、どのようにそれらを注入します。

答えて

1

あなたはこのような何か(https://guides.codepath.com/android/Dependency-Injection-with-Dagger-2)使用することができます - 基本的には、@Named修飾子

+0

を使用してインスタンスを注入

@Provides @Named("cached") @Singleton OkHttpClient provideOkHttpClient(Cache cache) { OkHttpClient client = new OkHttpClient(); client.setCache(cache); return client; } @Provides @Named("non_cached") @Singleton OkHttpClient provideOkHttpClient() { OkHttpClient client = new OkHttpClient(); return client; } @Inject @Named("cached") OkHttpClient client; @Inject @Named("non_cached") OkHttpClient client2; 

をあまりにもコンストラクタ・インジェクションのために働くことですか? –

+2

@MohamedIbrahimはい、代わりにパラメータに注釈を付けるだけです。 –

関連する問題