我现在正在研究 Dagger 2 (Java),一开始就遇到了一个问题。遗憾的是,我还没有在 Dagger 2 文档或 Stackoverflow 上找到任何关于它的内容,所以如果你们知道一些资源,我将不胜感激。
我在此存储库中准备了一个最小示例来解释我的问题:https ://github.com/stackoverflow-samples/dagger2-dependency-cycle
所以我们得到了一个应该被构造的应用程序类
public class Application {
@Inject
public Application(SomeDependency one) {
}
public static void main(String[] args) {
DaggerApplicationComponent.create().build();
}
}
...具有虚拟依赖
public class SomeDependency {
@Inject
public SomeDependency() {
}
}
当然还有 Dagger 类/接口 ... .. 一个组件接口:
@Component(modules = ApplicationModule.class)
public interface ApplicationComponent {
Application build();
}
..和一个模块:
@Module
abstract class ApplicationModule {
@Provides
static SomeDependency provideDepdendencyOne() {
return new SomeDependency();
}
}
我不明白为什么 Dagger 强迫我SomeDepdendency使用@Provides注释注册并且不允许通过以下方式注册它@Binds:
@Binds
abstract SomeDependency bindDepdendencyOne(SomeDependency one);
每当我将代码从 更改为@Provides时@Binds,都会出现以下错误:
[Dagger/DependencyCycle] Found a dependency cycle:
io.github.codejanovic.dagger2.example.SomeDependency is injected at
io.github.codejanovic.dagger2.example.ApplicationModule.bindDepdendencyOne(one)
io.github.codejanovic.dagger2.example.SomeDependency is injected at
io.github.codejanovic.dagger2.example.Application(one)
io.github.codejanovic.dagger2.example.Application is provided at
io.github.codejanovic.dagger2.example.ApplicationComponent.build()
无法@Bind实现对我来说绝对没有意义。我监督什么?
皈依舞
陪伴而非守候
相关分类