Singleton Dagger2组件

时间:2015-06-11 13:50:27

标签: java google-app-engine servlets dagger dagger-2

我在google appengine项目中使用Dagger2,我有几个servlet使用,应该是给定对象(MyObject)的单例实例。

@Singleton
@Component(modules = {MyModule.class})
public interface MyComponent {
  IMyObject object();
}

然后我需要DaggerMyComponent.create()也是一个单例,以便我可以在所有servlet中获得相同的IMyObject。为此,我添加了一个

DaggerMyComponent INSTANCE = DaggerMyComponent.create()

到我的MyComponent界面。但是,仍然允许再次调用create(),这对我来说不一定是一个很好的解决方案。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

不幸的是,文档似乎在说Dagger对版本2.0.1没有提供这样的限制

  

为了获得与范围相关的正确行为   注释,调用者的责任来实例化新的   适当时的组件实例。单例组件,用于   实例,每个应用程序只应实例化一次,而a   每个请求应该实例化一次RequestScoped组件。

http://google.github.io/dagger/api/latest/dagger/Component.html