モジュールに何かを注入することは可能ですか?
私は2つの基本モジュール/コンポーネントを持っています:
@Component(modules = {OkHttpModule.class})
public interface OkHttpComponent extends AppComponent {
OkHttpClient provideOkHttpClient();
}
@Module
public class OkHttpModule {
@Provides
OkHttpClient provideOkHttpClient() {
return mHttpClient;
}
}
@Component(modules = {GsonModule.class})
public interface GsonComponent extends AppComponent {
Gson provideGson();
}
@Module
public class GsonModule {
@Provides
Gson provideGson() {
return mGson;
}
}
このモジュール/コンポーネントを使用して、3 番目のモジュールを作成します。
@Component(dependencies = {OkHttpComponent.class, GsonComponent.class},
modules = {RetrofitModule.class})
public interface RetrofitComponent extends AppComponent {
API provideAPI();
}
@Module
public class RetrofitModule {
@Inject OkHttpClient mHttpClient;
@Inject Gson mGson;
@Provides
VeentsMeAPI provideVeentsMeAPI() {
return mVeentsMeAPI;
}
}
しかしmHttpClient、mGson注射されていません。モジュールに何かを注入することは可能ですか? はいの場合、どのように?
次のようなコンポーネントを作成します。
okHttpComponent = DaggerOkHttpComponent.builder()
.okHttpModule(new OkHttpModule(this))
.build();
gsonComponent = DaggerGsonComponent.builder()
.gsonModule(new GsonModule())
.build();
retrofitComponent = DaggerRetrofitComponent.builder()
.retrofitModule(new RetrofitModule())
.okHttpComponent(okHttpComponent)
.gsonComponent(gsonComponent)
.build();