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

Объясните предназначение аннотации @Provides в контексте dependency injection.

Компании, где спрашивали
Willdberies

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

sobes.tech AI

Аннотация @Provides используется в библиотеках dependency injection (например, Dagger) для обозначения методов, которые создают и предоставляют зависимости.

Когда вы не можете просто инжектировать объект через конструктор (например, если создание объекта сложное или требует дополнительной логики), вы создаёте метод с @Provides, который возвращает нужный объект. DI-фреймворк вызывает этот метод, чтобы получить экземпляр зависимости.

Пример на Dagger:

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

Здесь метод provideOkHttpClient создаёт и возвращает настроенный объект OkHttpClient. DI-контейнер использует этот метод для внедрения OkHttpClient в нужные места.

Таким образом, @Provides помогает управлять созданием зависимостей с кастомной логикой внутри DI-системы.