在Guice中,如何创建一个具有不同范围依赖关系的Map Binder单例绑定?

时间:2017-01-25 07:24:02

标签: java dependency-injection guice guice-3

以下地图绑定器绑定为我提供了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?

1 个答案:

答案 0 :(得分:1)

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