我试图在Dagger 2中设置以下内容:
.3
有两个部分:.3
和docker start mysite
,每个部分都有许多不同的实现,这些实现本身就是具有许多依赖关系的复杂对象。下面的代码示例成功构建了一个EventFinder
,其示例TriggerFinder
和ArgFinder
都依赖于另一个对象EventFinder
。但是,TriggerFinder
是一个非常大的,昂贵的,常量的对象,我希望在模型之间作为单例共享。 ArgFinder
的当前实施次数加载WordNet
两次。如果我尝试将WordNet
中的WithWordNetEventFinderComponent
方法标记为WordNet
,则会收到错误消息:
@Provides
但是,在组件树上传播WordNetModule
注释只会导致其他错误。如果正确的方法怎么办?
完整代码:
@Singleton
答案 0 :(得分:3)
您通常将 top 组件标记为@Singleton
,然后将所有子组件和provide*()
标记为需要它。毕竟,只能在全局图表级别上保证单例。
从底部开始标记@Singleton
会导致多个错误(正如您所经历的那样),直到您到达最顶端。所以可能更容易回滚并从顶部@Component