假设我有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
的,所有这些都是稍后在当前和子范围中创建的——重用它。