@Module 標記的類主要提供其他類所需要的依賴實例
用Module注解代表這個類主要用來提供需要的依賴
用Provides代表這個方法是提供依賴的方法
Module內(nèi)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會幫我們實現(xiàn)這個方法,第一種注入方式
// HispitalPresenter hispitalPresenter();
//下面是第二種注入方式
void inject(LauncherActivity launcherActivity);
void inject(MainActivity mainActivity);
}
@Inject在需要輸入的屬性前標記
//傳統(tǒng)的對象實例蒲列,
HispitalPresenter hi=new HispitalPresenter(this);
hi.getHispitalData();
//Dagger2注入使用的:第一種
AppComponent build = DaggerAppComponent.builder().appModule(new AppModule(this)).build();
HispitalPresenter hispitalPresenter = build.hispitalPresenter();
//此方法Dagger2幫我們實現(xiàn)那個那個接口
hispitalPresenter.getHispitalData();
//Dagger2注入使用的第二種
//AppComponent類中加入 void inject(LoginActivity loginActivity);
AppComponent build = DaggerAppComponent.builder().appModule(new AppModule(this)).build();
build.inject(this);//需要在@Component中寫void Inject方法