Back to questions
Junior — Middle
68
Объясните предназначение аннотации @Provides в контексте dependency injection.
Companies where asked
Willdberies
Answer from AI
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-системы.