0

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

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

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

DaggerMyComponent INSTANCE = DaggerMyComponent.create()

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

有任何想法吗?

谢谢!

4

1 回答 1

2

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

为了获得与范围注释关联的正确行为,调用者有责任在适当的时候实例化新的组件实例。例如,一个 Singleton 组件应该只在每个应用程序中实例化一次,而 RequestScoped 组件应该在每个请求中实例化一次。

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

于 2015-06-12T14:13:23.790 回答