似乎所有Guice的开箱即用的Scope实现本质上都是基于线程的(或完全忽略线程):
Scopes.SINGLETON并Scopes.NO_SCOPE忽略线程并且是边缘情况:全局范围而不是范围.
ServletScopes.REQUEST并ServletScopes.SESSION最终依赖于从a中检索范围对象ThreadLocal<Context>.检索Context到的HttpServletRequest对包含对包含存储为命名属性的范围对象的引用的引用(其中name是从中派生的com.google.inject.Key).
SimpleScope来自自定义范围的类Guice wiki还使用ThreadLocal<Map<Key<?>, Object>>成员变量提供每线程实现.
有了这个序言,我的问题是:如何创建一个非基于线程的范围?似乎我可以用来查找a Map<Key<?>, Object>的东西丢失了,因为传入的唯一内容Scope.scope()是a Key<T>和a Provider<T>.
在此先感谢您的时间.