构造函数注入
可以通过 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
) - 它可以使用它所依赖的组件公开的对象(组件依赖性)