Dagger2的学习过程

    xiaoxiao2021-03-25  125

    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 了。

    转载请注明原文地址: https://ju.6miu.com/read-5021.html

    最新回复(0)