将用户类添加到所有演示者

时间:2010-06-29 15:02:17

标签: gwt dependency-injection gin

我对GIN有一种朦胧的理解,但是它可以用于注入演示者等。

我正在尝试向所有演示者注入一个自制的“用户”类,以便获取当前登录的用户。

我已经在我的User类的构造函数中添加了@Inject,并将User添加到了我的GIN模块......但除此之外,我完全迷失了。我是否将其绑定到我的应用程序演示者(尝试过,但我收到错误,因为用户没有扩展我的AppPresenter)?作为一个单身人士?这甚至是传递这些数据的正确方法吗?

我讨厌在这里发帖(不是寻找免费的家庭作业),但我在其他任何地方都找不到合适的教程/示例。

提前非常感谢。

1 个答案:

答案 0 :(得分:2)

我看到两种可能性:

  • 使用@Provides方法或Provider来源注入。但是,问题是如何将当前登录的用户传递给这些方法,因为全局状态是禁止的。一个可能的解决方案是通过事件总线传递它,但此时似乎它有点击败DI的整个点(注入当前登录的用户是恕我直言,而不是DI的角色)。
  • 通过事件总线传递给用户。创建一个在用户登录/更改时被触发的自定义事件,并且一些演示者会监听该事件(毕竟,并非所有演示者都必须知道当前用户)。

我更喜欢并使用第二种方法 - 虽然DI很棒,但按照你所描述的方式使用它似乎对我有点害怕。我强烈建议查看Guice documentation - Gin基本上是Guice包装好与GWT一起工作,因此核心是相同的。对于其他一些指针,如何有效地使用DI,并且通常编写可测试的代码,我强烈建议Misko Hevery's blogguide to writing testable code他在那里(由Google内部使用)。