首页 > 解决方案 > Dagger 2 自定义范围声明中的保留策略

问题描述

在 Dagger 2 中,当声明自定义范围时:

@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface MyScope {
}

我看到很多 Dagger2RUNTIME的教程都用作保留策略。我理解和SROUCE之间的区别。但我不明白为什么这些教程中的匕首自定义范围都用作其保留策略。CLASSRUNTIMERUNTIME

我的意思是不是在编译期间生成了依赖关系图,这意味着仅在编译期间才需要范围,那么,为什么不在CLASSDagger2 的自定义范围中用作保留策略呢?谁能给我解释一下?

标签: androiddagger-2

解决方案


你是对的。与 Dagger 无关,但它可能与其他(运行时)依赖注入框架有关。

Dagger 使用的javax.inject包也被其他 DI 框架使用,并且带有自己的合同/文档。

如果您阅读,Scope您会看到:

范围注释 [..] 用@Scope,注释@Retention(RUNTIME),通常是@Documented

所以这实际上是关于遵守该合同(并支持其他 DI 框架),而不是关于 Dagger 在内部如何工作。


推荐阅读