dependency-injection - Dagger 2 - 缺少构造函数注入(inject)示例

标签 dependency-injection dagger-2

我花了几个小时搜索,但仍然没有找到任何关于 Dagger 2 构造函数注入(inject)的明确示例。

假设我有以下声明,如何使用 Dagger 2 注入(inject)在某处创建 B 类的实例?

@Module
public class ClassA {
    @Provides public ClassA provideA(){
        return new ClassA();
    }
}
public class ClassB{
    private ClassA a;
    @Inject public ClassB(ClassA a){
        this.a = a;
    }
}

最佳答案

如果你有

@Module
public class ModuleA {
    /*unscoped*/ @Provides public ClassA provideA(){
        return new ClassA();
    }
}

/*unscoped*/
public class ClassB{
    private ClassA a;

    @Inject public ClassB(ClassA a){
        this.a = a;
    }
}

那么你需要

/*unscoped*/
@Component(modules={ModuleA.class})
public interface MyComponent {
    ClassA classA();
    ClassB classB();
}

然后你可以像这样访问

MyComponent component = DaggerMyComponent.create();
ClassB classB = component.classB();

或者

/*unscoped*/
@Component(modules={ModuleA.class})
public interface MyComponent {
    ClassA classA();
    ClassB classB();

    void inject(MyClass myClass);
}

还有

public class MyClass {
    @Inject
    ClassB classB;

    public void init() {
        MyComponent component = getComponent();
        component.inject(this);
    }
}

关于dependency-injection - Dagger 2 - 缺少构造函数注入(inject)示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40562481/

相关文章:

asp.net-mvc - 在 asp.net mvc Controller 中使用构造函数注入(inject)的 IoC 会浪费资源吗?

java - 我可以更新 ApplicationModule 并在每次注入(inject)时获取更新的值吗

android - 从 Dagger 2 移植到 Android Dagger 2.11

android - 使用适用于 Android MVP 的 Dagger 2 设置模块和组件 - 具有多个 fragment 的 Activity

android - Dagger2 androidTest 错误重复条目 : javax/annotation/Generated. 类

android - Dagger 2 组件、模块和范围的生命周期

php - 什么是依赖注入(inject)容器?

c# - 在 .net 核心中使用构造函数参数进行依赖注入(inject)

java - Spring 进行 Spark 作业注入(inject)

java - Android Dagger2 和 Butterknife 冲突