以下地图绑定器绑定为我提供了com.google.inject.OutOfScopeException:不在MyScope中:
mapbinder.addBinding("ferrari").to(Ferrari.class).in(Singleton.class);
我猜这可能是因为法拉利的构造函数依赖于一个用@MyScope注释的对象。如何在这种情况下创建法拉利Singleton?
我知道(how to create an object from a different scope)创建不同范围的对象,我们需要提供者。如果是这种情况,我应该在FerrariProvider的get方法中写什么,以便它总是返回我同样的法拉利实例?我有什么方法可以创建一个依赖于不同范围内物体的法拉利Singleton?
答案 0 :(得分:1)
您可以将单例注释添加到提供程序,并在字段中缓存get方法的返回结果并返回该结果。因此,每次调用提供程序时,它都将返回相同的对象。您还可以注入依赖项,无论其提供程序中的范围如何。