Dagger 2 依赖注入不起作用
Dagger 2 Dependency Injection not working
我是 Dagger 2 的新手,我正在尝试获取 this 基本示例并进行一些小的修改。
这是我目前拥有的:
组件class
@Component(modules = {MyModule.class})
public interface MyComponent {
void inject(Object object);
}
模块class
@Module
public class MyModule {
@Provides
@Singleton
public Retrofit getRetrofit(){
return new Retrofit();
}
}
静态注入器
public class MyStaticInjector {
private static MyComponent di;
public static void inject(Object object){
if(di == null){
di = DaggerMyComponent.builder().build();
}
di.inject(object);
}
}
问题是每当我这样做时
MyStaticInjector.inject(this);
带注释的字段仍然为空。我怀疑问题出在接口方法中的对象类型上。在这个例子中,有一个 Activity 代替。但是我需要在 classes 中使用 DI,这不是活动。
谁能帮帮我?谢谢。
Object
没有 @Inject
注释字段。因此注入工作正常——它只是没有注入。
您必须将实际的 classes 与 inject(MyClass)
一起使用,而不是 Object
,这样才能生成代码并注入字段。
Dagger 在编译时 生成源代码。如果它不知道实际的 class,则无法为其创建代码。
我是 Dagger 2 的新手,我正在尝试获取 this 基本示例并进行一些小的修改。
这是我目前拥有的:
组件class
@Component(modules = {MyModule.class})
public interface MyComponent {
void inject(Object object);
}
模块class
@Module
public class MyModule {
@Provides
@Singleton
public Retrofit getRetrofit(){
return new Retrofit();
}
}
静态注入器
public class MyStaticInjector {
private static MyComponent di;
public static void inject(Object object){
if(di == null){
di = DaggerMyComponent.builder().build();
}
di.inject(object);
}
}
问题是每当我这样做时
MyStaticInjector.inject(this);
带注释的字段仍然为空。我怀疑问题出在接口方法中的对象类型上。在这个例子中,有一个 Activity 代替。但是我需要在 classes 中使用 DI,这不是活动。
谁能帮帮我?谢谢。
Object
没有 @Inject
注释字段。因此注入工作正常——它只是没有注入。
您必须将实际的 classes 与 inject(MyClass)
一起使用,而不是 Object
,这样才能生成代码并注入字段。
Dagger 在编译时 生成源代码。如果它不知道实际的 class,则无法为其创建代码。