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();
}
}