【发布时间】:2018-03-21 17:25:33
【问题描述】:
假设我有范围 S1,其中包含具有绑定的模块:
bind(Repository.class).to(RepositoryImpl.class).singletonInScope()
然后S2 范围以S1 作为父级(S1 -> S2)打开,S2 定义相同的绑定(因为它是独立的,对S1 一无所知):
bind(Repository.class).to(RepositoryImpl.class).singletonInScope()
默认情况下,Toothpick 会覆盖父范围依赖项,因此 S2 将创建一个新的 RepositoryImpl。
问题:有没有办法重用在S1 中创建的绑定并忽略S2 绑定?
此要求来自这样一个事实,即有时存在 独立 应用程序组件,它们驻留在不同的范围内并共享 Repository 依赖项。他们彼此一无所知。这些组件也可以按照不同的顺序创建,具体取决于场景和用例。
所以我要强加的唯一规则是:某个组件(确切地不知道是哪一个)创建 Repository,所有这些都是稍后在当前 和 子范围中创建的 - 重用它.
【问题讨论】:
标签: java android dependency-injection toothpick-di