Dagger 2的自定义范围声明中的保留策略

问题描述 投票:0回答:1

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

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

[我看到许多Dagger2教程都使用RUNTIME作为保留策略。我了解SROUCECLASSRUNTIME之间的区别。但是我不明白为什么这些教程中的匕首自定义范围都使用RUNTIME作为保留策略。

[我的意思是不是这样,以便在编译期间生成依赖关系图,这意味着仅在编译期间需要作用域,然后,为什么不使用CLASS作为Dagger2的自定义作用域中的保留策略?有人可以向我解释吗?

android dagger-2
1个回答
0
投票

你是对的。 Dagger无关紧要,但其他(运行时)依赖项注入框架则可能有用。

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

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

作用域注释[..]用Scope@Scope,通常是@Retention(RUNTIME)进行注释。

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

© www.soinside.com 2019 - 2024. All rights reserved.