異なるRetrofit
インスタンスを構築する2つの@Provides
メソッドを持つDaggerモジュールがあります。また、それぞれがRetrofit
インスタンスの1つを消費する必要がある2つの方法があります。同じタイプの2つの異なるインスタンスを提供する
各消費関数で使用するRetrofit
をDaggerに伝えるにはどうすればよいですか?
マイコード:
@Provides
@Singleton
public OkHttpClient provideOkHttpClient(){
final OkHttpClient.Builder builder = new OkHttpClient.Builder();
if (BuildConfig.DEBUG) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
builder.addInterceptor(logging);
}
builder.connectTimeout(60 * 1000, TimeUnit.MILLISECONDS)
.readTimeout(60 * 1000, TimeUnit.MILLISECONDS);
return builder.build();
}
@Provides
@Singleton
public Retrofit provideRestAdapter1(Application application, OkHttpClient okHttpClient) {
Retrofit.Builder builder = new Retrofit.Builder();
builder.client(okHttpClient)
.baseUrl(application.getString(R.string.Endpoint1))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create());
return builder.build();
}
@Provides
@Singleton
public Retrofit provideRestAdapter2(Application application, OkHttpClient okHttpClient) {
Retrofit.Builder builder = new Retrofit.Builder();
builder.client(okHttpClient)
.baseUrl(application.getString(R.string.Endpoint2))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create());
return builder.build();
}
@Provides
@Singleton
public GithubApiService provideGithubApiService(Retrofit restAdapter) {
return restAdapter.create(GithubApiService.class);
}
@Provides
@Singleton
public GithubApiService2 provideGithubApiService(Retrofit restAdapter) {
return restAdapter.create(GithubApiService2.class);
}
}