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