java Dagger2无法在注入的类内注入字段
我试着玩dagger2,但我遇到了场注入的问题,这是我的代码
POJO课程:
// User.java
public class User {
private String firstName, lastName;
public User(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
我无法注入user
字段的类
//BackendService.java
public class BackendService {
@Inject
public User user; // Not injected -> Null
@Inject
public BackendService() {
}
}
用户提供程序类
// UserModule.java
@Module
public class UserModule {
@Provides
@Singleton
User providesUser() {
return new User("AA","BB");
}
}
后端提供程序类
// BackendServiceModule.java
@Module
public class BackendServiceModule {
@Provides
BackendService provideBackendService() {
return new BackendService();
}
}
最后但并非最不重要的是,组件
// ApplicationComponent.java
@Component(modules = {UserModule.class, BackendServiceModule.class})
public interface ApplicationComponent {
BackendService provideBackendService();
void inject(ConsumerMain consumerMain);
}
问题是在BackendService.java
中,user
字段没有被注入
注射在^{
# 1 楼答案
删除
@Provides BackendService
方法当你打电话给
new BackendService()
时,你是在告诉Dagger“不要担心如何创建后端服务,我可以为你做”。这也防止Dagger调用@Inject
注释的构造函数和方法,或填充@Inject
注释的字段当您删除该方法时,Dagger将检查BackendService以了解如何实例化它本身,此时它将看到
@Inject
构造函数和字段,并在需要时使用它们来构造BackendService