Может ли кто-нибудь объяснить (подробно), как различные параметры в аннотации Dagger @Module работают и взаимодействуют друг с другом?

Я вижу некоторую документацию и блоги, но ничего, что объединяет все это. Если он существует, указателя на него может быть достаточно.

Я думаю, что понимаю некоторые основы, но, пожалуйста, поправьте меня, если я ошибаюсь.

  1. library = true означает, что Dagger должен проверять, что каждый @Provides в модуле используется для внедрения чего-либо в список классов, перечисленных в списке injects = { ... }
  2. library = false отключает эту проверку, потому что, возможно, вы используете этот модуль в нескольких местах/проектах, и не каждый @Provides используется.
  3. complete = true означает, что этот модуль может удовлетворять всем зависимостям, необходимым для всех классов, перечисленных в injects = { ... }

Я не понимаю, как работают include и addTo, и как их можно (или даже нужно) использовать для включения установки complete = true.

Например, скажем, я создаю исходный график, используя

ObjectGraph graph = ObjectGraph.create(moduleA, moduleB);

а затем я расширяю этот график с помощью ModuleC.

ObjectGraph extendedGraph = graph.plus(new ModuleA());

Мне кажется, что граф был построен из ModuleA и ModuleB, поэтому я хотел бы сказать, что ModuleC добавляет к оба ModuleA и ModuleB, но addTo допускает только один.

Должны ли мы сказать, что ModuleC включает в себя ModuleA и ModuleB, а затем сказать, что ModuleC завершен?


person nPn    schedule 23.08.2014    source источник


Ответы (1)


Это лучший ресурс, который я могу найти, к сожалению, они по-прежнему остаются открытыми для более четкого документирования каждой аннотации.

https://github.com/square/dagger/issues/370

person rooftop    schedule 25.08.2014
comment
Это определенно помогает - person nPn; 25.08.2014
comment
Да, мы сосредоточились на Dagger 2.x, который сильно меняет то, как все эти части взаимодействуют, и приложим больше усилий для документирования этого. Мы должны начать развертывание в этом квартале или в начале следующего. - person Christian Gruber; 25.08.2014