@Module 标记的类主要提供其他类所需要的依赖实例
用Module注解代表这个类主要用来提供需要的依赖
用Provides代表这个方法是提供依赖的方法
Module内Provides标记的方法,会自动相互寻找依赖
private HispitalShow hispitalShow;
public AppModule(HispitalShow hispitalShow) {
this.hispitalShow = hispitalShow;
}
@Provides
public HospitalModel provideHospitalModel(){
return new HospitalModel();
}
@Provides
public HispitalPresenter provideHispitalPresenter(HospitalModel hospitalModel){
return new HispitalPresenter(hispitalShow,hospitalModel);
}
@Component是@Inject和@Module的桥梁
@Component(modules = {AppModule.class})
public interface AppComponent {
//Dagger2会帮我们实现这个方法,第一种注入方式
// HispitalPresenter hispitalPresenter();
//下面是第二种注入方式
void inject(LauncherActivity launcherActivity);
void inject(MainActivity mainActivity);
}
@Inject在需要输入的属性前标记
//传统的对象实例,
HispitalPresenter hi=new HispitalPresenter(this);
hi.getHispitalData();
//Dagger2注入使用的:第一种
AppComponent build = DaggerAppComponent.builder().appModule(new AppModule(this)).build();
HispitalPresenter hispitalPresenter = build.hispitalPresenter();
//此方法Dagger2帮我们实现那个那个接口
hispitalPresenter.getHispitalData();
//Dagger2注入使用的第二种
//AppComponent类中加入 void inject(LoginActivity loginActivity);
AppComponent build = DaggerAppComponent.builder().appModule(new AppModule(this)).build();
build.inject(this);//需要在@Component中写void Inject方法