【问题标题】:In Guice, How to create a Map Binder singleton binding which has a different scope dependency?在 Guice 中,如何创建具有不同范围依赖的 Map Binder 单例绑定?
【发布时间】:2017-01-25 07:24:02
【问题描述】:

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

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

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

我知道 (how to create an object from a different scope) 要创建不同范围的对象,我们需要提供者。如果是这种情况,我应该在 FerrariProvider 的 get 方法中写什么,以便它总是返回同一个 Ferrari 实例?我有什么方法可以创建一个依赖于不同范围内对象的 Ferrari Singleton?

【问题讨论】:

    标签: java dependency-injection guice guice-3


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多