Sobes.tech
Назад к вопросам
Junior — Middle
91

В каких ситуациях рекомендуется применять модуль Provides в Dagger для предоставления зависимостей?

Ответ от нейросети

sobes.tech AI

Аннотация @Provides в Dagger используется внутри модулей для определения методов, которые создают и предоставляют зависимости. Рекомендуется применять @Provides в следующих ситуациях:

  • Когда создание зависимости требует сложной логики или конфигурации, которую нельзя выразить через конструктор с @Inject.
  • Если нужно предоставить интерфейс или абстракцию, а реализация создаётся внутри метода.
  • Для создания объектов, которые не могут быть аннотированы @Inject (например, классы из сторонних библиотек).
  • Когда требуется контролировать жизненный цикл или параметры создаваемого объекта.

Пример:

@Module
public class NetworkModule {

    @Provides
    OkHttpClient provideOkHttpClient() {
        return new OkHttpClient.Builder()
            .connectTimeout(30, TimeUnit.SECONDS)
            .build();
    }

    @Provides
    Retrofit provideRetrofit(OkHttpClient client) {
        return new Retrofit.Builder()
            .baseUrl("https://api.example.com")
            .client(client)
            .build();
    }
}

Здесь @Provides методы создают и настраивают объекты, которые нельзя просто аннотировать @Inject.