Android Dagger2 @Module includes属性用法

@Module
public class TeacherModule {
    @Provides
    public Teacher provideTeacher() {
        return new Teacher();
    }
}

MainModule通过includes包含TeacherModule

@Module(includes = TeacherModule.class)
public class MainModule {
    @Provides
    public Person providePerson() {
        return new Student();
    }
}

这样MainActiviyComponent最后其实是引用了MainModule和TeacherModele两个Module

@Component(modules = MainModule.class)
public interface MainActivityComponent {
    void inject(MainActivity activity);
}

以上其实和以下写法效果是一样的

@Component(modules = {
        MainModule.class,
        TeacherModule.class
})
public interface MainActivityComponent {
    void inject(MainActivity activity);
}

当然Module的includes可以多层依赖的,比如TeacherModule还可以在includes其他Module,而且includes支持包含多个

@Module(includes = {
        FatherModule.class,
        MotherModule.class
})
public class TeacherModule {
    @Provides
    public Teacher provideTeacher() {
        return new Teacher();
    }
}

 

 

 

 

posted @ 2019-06-15 23:35  野猿新一  阅读(21)  评论(0编辑  收藏  举报