Singleton范围在Dagger 2中

时间:2015-06-23 19:07:20

标签: dagger-2

我试图在Dagger 2中设置以下内容:
.3有两个部分:.3docker start mysite,每个部分都有许多不同的实现,这些实现本身就是具有许多依赖关系的复杂对象。下面的代码示例成功构建了一个EventFinder,其示例TriggerFinderArgFinder都依赖于另一个对象EventFinder。但是,TriggerFinder是一个非常大的,昂贵的,常量的对象,我希望在模型之间作为单例共享。 ArgFinder的当前实施次数加载WordNet两次。如果我尝试将WordNet中的WithWordNetEventFinderComponent方法标记为WordNet,则会收到错误消息:

@Provides

但是,在组件树上传播WordNetModule注释只会导致其他错误。如果正确的方法怎么办?

完整代码:

@Singleton

1 个答案:

答案 0 :(得分:3)

您通常将 top 组件标记为@Singleton,然后将所有子组件和provide*()标记为需要它。毕竟,只能在全局图表级别上保证单例。

从底部开始标记@Singleton会导致多个错误(正如您所经历的那样),直到您到达最顶端。所以可能更容易回滚并从顶部@Component

开始