В Dagger 2 происходит построение графика зависимости во время компиляции или во время выполнения? - PullRequest
1 голос
/ 25 октября 2019

У меня есть глупый вопрос о Dagger 2. Потому что я хочу быть уверен. Я знаю, что во время компиляции Dagger генерирует код. Но для следующего кода:

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
          //build main component along with core component
         mainComponent = DaggerMainComponent
                .builder()
                .myModule(MyModule())
                .coreComponent(DaggerCoreComponent.builder().build())
                .build()
     }
}

Вызывает ли Dagger метод build () для построения компонента для рисования графа зависимостей во время компиляции или во время выполнения? Насколько я понимаю, это во время выполнения, я прав?

Если я прав выше, как насчет следующего кода? 1009 * запрашивается и, если нет, не генерирует зависимости, размещенные в MySubComponent. Но происходит ли этот процесс во время выполнения или во время компиляции?

1 Ответ

0 голосов
/ 25 октября 2019

Граф зависимостей строится во время компиляции посредством обработки аннотаций. Dagger сгенерирует классы, подобные этому DaggerMainComponent, из вашего примера на основе аннотаций, которые вы добавили в свои классы, например @Module, @Component, @Inject и т. Д.

Я бы предложил вамПрочтите статью об обработке аннотаций, например: one :

Так что же такое обработка аннотаций? Аннотация - это своего рода механизм тегов, который можно пометить некоторыми мета на Классах, Методах или Параметрах, и Обработка аннотаций проанализирует эти Аннотации во время компиляции и сгенерирует для вас Классы в соответствии с вашими Аннотациями.

build() - этоВызванный во время выполнения, вы можете открыть код DaggerMainComponent и проверить реализацию метода build, он будет создавать некоторые экземпляры зависимых модулей, проверять другие требования и, наконец, создавать новый экземпляр DaggerMainComponent.

...