Android Dagger - два метода на доставчик, кой се избира

Да кажем, че имам дейност като тази:

 public class ListBlogsActivity extends Activity {
  @Inject ObjectMapper mapper;


  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //Put Dagger into action
    ObjectGraph.create(new ListBlogsModule()).inject(this);  //Dagger

    //do a bunch of other things etc...
  }

Сега да кажем, че имам модул dagger, който дефинирам да инжектира ObjectMapper в дейността по следния начин:

    @Module(injects = ListBlogsActivity.class)
public class ListBlogsModule {
  @Provides ObjectMapper objectMapper() {

    ObjectMapper mapper = new ObjectMapper();
    //do some more stuff ..blah blah
    return mapper;
  }
}

Сега е основният ми въпрос:

да кажем, че имам друг модул, който дефинираме да инжектира в същата дейност ObjectMapper:

@Module(injects = ListBlogsActivity.class)
public class ListBlogs2Module {
  @Provides ObjectMapper objectMapper2() {

    ObjectMapper mapper = new ObjectMapper();
    //do some more stuff ..blah blah
    return mapper;
  }
}

Какво ще се случи, как dagger ще разграничи това, тъй като имам два модула, които осигуряват инжектиране на sdame тип ObjectMapper - кой се избира?


person j2emanue    schedule 12.12.2014    source източник


Отговори (1)


Няма да се компилира.

Ако имате две зависимости от един и същи тип в различни модули, трябва да маркирате едната като основна. Задайте долния ред в анотацията на вашия модул.

overrides = true
person tomrozb    schedule 12.12.2014