转载,这篇讲的也太清楚了吧,建议看原文
Inject,Component,Module,Provides是dagger2中的最基础最核心的知识点。奠定了dagger2的整个依赖注入框架。
Inject主要是用来标注目标类的依赖和依赖的构造函数
Component它是一个桥梁,一端是目标类,另一端是目标类所依赖类的实例,它也是注入器(Injector)负责把目标类所依赖类的实例注入到目标类中,同时它也管理Module。
Module是一个简单工厂模式,Module可以包含创建类实例的方法,这些方法用Provides来标注。
关联起来:
class A{
@inject
public B b;
}
class B{
@inject
public B(){
}
}
目标类A 依赖了类B,要想在A类中使用B就需要实例化B,component 负责把实例化好的B赋值给A类中的b,
而component并不具备初始化B的能,使用component就需要到提供B的地方去拿,这个地方就是Module工厂,module工厂如下:
@module
public class ModuleTest{
@provide
B provideB(){
return new B();
}
}
component是如果拿到module中的B的呢,看一下component如何操作:
@component(modules = {ModuleTest.class})
public interface TestComponent{
void inject(AActivity A);
}
也就是component通过modules引用了module拿到B;、
原文链接:https://blog.csdn.net/change987654321/article/details/78632022