我正在尝试理解和实现 Dagger 2。我已经阅读了很多不同的教程和官方 documentation .我想我大体上理解了它,但我仍然无法理解一些简单的要点(虽然我写了它,但我已经找到了一些解决方案,但是..):
It's possible for @Provides methods to have dependencies of their own.
什么时候可以?
我看到有可能得到“组件包含一个依赖周期”。
谁能帮我理解可能和不可能的情况。
谢谢。
最佳答案
实际上,您可以使用限定符(@Named("something")
注释)为给定的依赖项获取多个不同类型的实现。
@Singleton
@Component(modules = ApplicationModule.class)
public interface ApplicationComponent {
void inject(BaseActivity baseActivity);
@Named("first")
BaseNavigator firstNavigator();
@Named("second")
BaseNavigator secondNavigator();
Context context();
//...
}
@Module
public class ApplicationModule {
private final AndroidApplication application;
public ApplicationModule(AndroidApplication application) {
this.application = application;
}
@Provides
@Singleton
@Named("first")
BaseNavigator provideFirstNavigator() {
return new SomeNavigator();
}
@Provides
@Singleton
@Named("second")
BaseNavigator provideSecondNavigator() {
return new OtherNavigator();
}
@Provides
Context provideApplicationContext() {
return this.application;
}
}
public abstract class BaseActivity extends Activity {
@Inject
@Named("second")
BaseNavigator navigator;
关于java - Dagger 2 - 提供具有自己依赖性的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34371810/