构造函数注入

可以通过 dagger 轻松创建没有依赖关系的类。

public class Engine {

    @Inject // <-- Annotate your constructor.
    public Engine() {
    }
}

任何组件都可以提供此类。它本身没有依赖关系,也没有作用域。没有必要进一步的代码。

依赖关系在构造函数中声明为参数。只要可以提供这些依赖关系,Dagger 就会调用构造函数并提供依赖关系。

public class Car {

    private Engine engine;

    @Inject
    public Car(Engine engine) {
        this.engine = engine;
    }
}

如果此组件也可以提供其所有依赖项 -thuan1,则此类可以由每个组件提供。由于 Engine 也可以构造注入,任何组件都可以提供 Car

只要组件可以提供所有依赖项,就可以使用构造函数注入。如果组件可以提供依赖关系

  • 它可以通过使用构造函数注入来创建它
  • 组件的模块可以提供它
  • 它可以由父组件提供(如果它是 @Subcomponent
  • 它可以使用它所依赖的组件公开的对象(组件依赖性)