Что такое Scope в Dagger и как создать кастомный Scope?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Scope в Dagger определяет время жизни объектов в графе зависимостей. Объекты, помеченные одним и тем же Scope, будут созданы один раз внутри этого Scope и использоваться повторно на протяжении всего его существования.
Примеры встроенных Scope: @Singleton, @ActivityScope (часто используется в примерах, но не является частью стандартной библиотеки Dagger).
Для создания кастомного Scope нужно объявить аннотацию с мета-аннотацией @Scope:
@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomScope {
}
Затем этот Scope применяется к компоненту и модулям/провайдерам, чьи объекты должны иметь это время жизни:
@MyCustomScope
@Component(modules = MyModule.class)
public interface MyComponent {
// Методы получения зависимостей
}
@Module
public class MyModule {
@Provides
@MyCustomScope
MyObject provideMyObject() {
// Логика создания объекта
return new MyObject();
}
}
Компонент с кастомным Scope создает синглтоны в рамках своего собственного времени жизни. Пока существует экземпляр этого компонента, объекты, помеченные его Scope, будут использоваться повторно. При уничтожении компонента и создании нового, новые экземпляры скоупированных объектов будут созданы снова.