Dagger2

@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方法

你可能感兴趣的:(Dagger2)