Dagger2的学习过程

1.最近接触一个MVP的项目,涉及到Dagger2的使用。一开始拿到项目代码的时候,大脑一片空白!之前没有接触过Dagger,没办法硬着头皮看了一篇有关Dagger2的简单入门博客。

2.直接进入主题:Dagger2涉及到三个要素,Module、Component、Container

3.今天的学习心得:Dagger2的注入规则,用@Inject注释的成员变量的依赖会首先从Module的@Provides方法集合中查找。如果查找不到的话,则会查找成员变量类型是否有@Inject构造方法,并会调用该构造方法注入该类型的成员变量。这时如果被@Inject注释的构造方法有参数的话,则将会继续使用注入规则进行递归查找。

4.关键词:递归查找!利用这个注入规则,我们可以轻松注入很多对象!从而实现类与类之间解耦的关键特性!

03.15  后续补充

1.对@Component注解的理解:我们另外还需要一个中间件去连接 依赖提供方依赖使用方,这就是 @Component!!!

 举个简单的例子

public class Tester {
    @Inject
    public Tester() {
    }
}
public class MainActivity extends Activity {
    @Inject 
    Tester tester;
}

@Component
public interface TestComponent {
    void inject(CActivity cActivity);
}
在 MainActivity 的 onCreate() 加入:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    DaggerTestComponent.builder().build().inject(this);
    ...
}
DaggerTestComponent 是 Dagger2 帮我们生成的类,命名规则就是在我们定义的接口名称前加上Dagger,实现了我们之前定义的 TestComponent 接口。执行完这一行代码,tester 就已经不是 null 了。

你可能感兴趣的:(Dagger2的学习过程)