Ответ
Да, работал с Dagger (Dagger 2/Hilt). Использовал его для dependency injection (DI) в Android-приложениях.
Ключевые моменты:
- Компоненты – контейнеры для зависимостей (
@Component). - Модули – источники объектов (
@Module+@Provides). - Scopes – управление жизненным циклом зависимостей (
@Singletonи др.). - Hilt – упрощённая версия Dagger для Android (автоматическая генерация компонентов).
Пример с Dagger:
@Module
class NetworkModule {
@Provides
fun provideRetrofit(): Retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com")
.build()
}
@Component(modules = [NetworkModule::class])
interface AppComponent {
fun inject(activity: MainActivity)
}
Пример с Hilt:
@Module
@InstallIn(SingletonComponent::class)
object NetworkModule {
@Provides
@Singleton
fun provideRetrofit(): Retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com")
.build()
}
@AndroidEntryPoint
class MainActivity : AppCompatActivity() { ... }
Практиковал внедрение в ViewModel, WorkManager и кастомные компоненты.