1

以下地图活页夹绑定给了我一个 com.google.inject.OutOfScopeException: Not in MyScope:

mapbinder.addBinding("ferrari").to(Ferrari.class).in(Singleton.class); 

我猜这可能是因为法拉利的构造函数依赖于一个用@MyScope 注释的对象。在这种情况下如何创建法拉利单例?

我知道(如何从不同范围创建对象)要创建不同范围的对象,我们需要提供者。如果是这种情况,我应该在 FerrariProvider 的 get 方法中写什么,以便它总是返回同一个 Ferrari 实例?我有什么方法可以创建一个依赖于不同范围内对象的法拉利单例?

4

1 回答 1

1

您可以将单例注释添加到您的提供程序,并将 get 方法的待返回结果缓存在字段中并返回。所以每次调用提供者时,都会返回相同的对象。您还可以注入依赖项,无论它们在您的提供程序中的范围如何。

于 2017-02-16T03:08:56.113 回答