Dagger2 Dependencies与SubComponent 深入

本文详细探讨了Dagger2中的依赖引用关系,包括子组件如何依赖上层组件,以及@Subcomponent的使用。讲解了如何通过@Subcomponent创建子组件,并通过子组件的Builder接口进行实例化。同时强调了@Scope的使用规则,以及@Subcomponent的工厂方法定义。Dagger2的这种设计允许在组件之间实现依赖注入的封装和隔离。
摘要由CSDN通过智能技术生成
依赖引用关系说明

参考链接

位于上层的component是看不到下层的,而下层则可以使用上层的,但不能引用同一层相邻component内的实例。

依赖图例子

在这里插入图片描述

@Subcomponent 子组件绑定 绑定子组件中的对象除了可以依赖自身模块中绑定的对象外,

  • 还可以依赖于其父组件或任何祖先组件中绑定的任何对象。
  • 另一方面,绑定在父组件中的对象不能依赖于绑定在子组件中的对象。 绑定在一个子组件中的对象也不能依赖于同级子组件中绑定的对象。
  • –> 表示依赖 !–> 表示不依赖
  • 子绑定对象–>父绑定对象–>祖绑定对象(子可以依赖祖父) 父绑定对象 !–>子绑定对象 子绑定对象!–>同子绑定对象
Dependencies 依赖的使用

@Component为其依赖de @Component提供对象

public class Teacher {
    public String name;
    public int age;
    
}


@Module
public class TeacherMoudle {
    @Provides
    public Teacher provideFather(){
        return new Teacher();
    }
}

@Component(modules = TeacherMoudle.class)
public interface TeacherComponent {
  Teacher getTeacher();//写抽象方法暴露依赖 Teacher
}

public class Student {
    public String name;
    public int age;

    public Student(Teacher teacher) {

    }
}


@Module
public class StudentMoudle {

    @Provides
    public Student provideChild(Teacher teacher){
        return new Student(teacher);
    }
}
//dependencies 表示 StudentComponent 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值