Dagger2构建错误:找到了一个依赖周期
AppComponent.java
Error:(8, 10) java: [Dagger/BindingCycle] Found a dependency cycle:
A is injected at
AModule.provideA(a)
A is injected at
App.mA
App is injected at
AppComponent.inject(App)
项目网址:
https://github.com/YingVickyCao/AndroidLibs/tree/master/source/dagger2
https://github.com/YingVickyCao/AndroidLibs/blob/master/source/dagger2/pom.xml
<dependencies>
<dependency>
<groupId>com.google.dagger</groupId>
<artifactId>dagger</artifactId>
<version>2.17</version>
</dependency>
<dependency>
<groupId>com.google.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>2.17</version>
<optional>true</optional>
</dependency>
</dependencies>
public class A {
private static final String TAG = A.class.getSimpleName();
public A() {
}
public String info() {
return "A@" + hashCode();
}
}
@Module
public class AModule {
private static final String TAG = AModule.class.getSimpleName();
// @Singleton
@Provides
public A provideA(A a) {
System.out.println(TAG + "," + "AModule@" + hashCode());
return new A();
}
}
@Module(includes = {AModule.class})
public class AppModule {
private static final String TAG = AppModule.class.getSimpleName();
private App mApp;
public AppModule(App app) {
mApp = app;
Log.d(TAG, "AppModule@" + hashCode());
}
// @Singleton
@Provides
public App provideApp() {
return mApp;
}
}
@Component(modules = {AppModule.class})
public interface AppComponent {
void inject(App app);
}
public class App {
private static final String TAG = App.class.getSimpleName();
@Inject
A mA;
public void create() {
DaggerAppComponent.builder().appModule(new AppModule(this)).build().inject(this);
Log.d(TAG, mA.info());
}
public static void main(String[] args) {
App app = new App();
app.create();
}
}
我不知道哪里出了问题。有人可以帮我吗?
非常感谢。