Java 我应该使用哪个GWT事件总线?
在gwt-user.jar中有2个EventBus接口和SimpleEventBus实现Java 我应该使用哪个GWT事件总线?,java,gwt,event-handling,Java,Gwt,Event Handling,在gwt-user.jar中有2个EventBus接口和SimpleEventBus实现 com.google.gwt.event.shared.EventBus和com.google.web.bindery.event.shared.EventBus 我将这些称为“gwt.event”和“web.bindery” 查看JavaDocs和源代码,我可以看到gwt.event仅仅包装了web.bindery。然而,gwt.event实现还隐藏了许多不推荐使用的方法 那么我应该使用哪种实现呢?(我使
com.google.gwt.event.shared.EventBus
和com.google.web.bindery.event.shared.EventBus
我将这些称为“gwt.event”和“web.bindery”
查看JavaDocs和源代码,我可以看到gwt.event仅仅包装了web.bindery。然而,gwt.event实现还隐藏了许多不推荐使用的方法
那么我应该使用哪种实现呢?(我使用的是GWT2.4)通常,您应该使用
com.google.web.bindery
中的一个。唯一的版本以前是在com.google.gwt.event
中,但当RequestFactory和AutoBeans从gwt本身迁移到com.google.web.bindery
中时,它们就可以在非gwt客户端中工作
如果您在演示者中使用
com.google.web.bindery
版本等,那么如果需要,您可以更轻松地使用GWT以外的应用程序。将该实例传递给PlaceController
和其他使用EventBus的类时,也不会收到弃用警告 如果您使用活动,那么您可能必须使用不推荐使用的活动,至少在它们清理整个API之前是这样: 使选择更加复杂。我在我的GWT应用程序中使用了guava,google的家伙们在其中添加了另一个EventBus(功能更不完整)
也许这些人需要坐在一起,定义一个实现来管理所有人
显然,我希望避免GWT代码中未严格使用的代码对GWT的所有依赖,因此番石榴对我来说很有趣。我知道这个问题已经有了答案,但可能值得添加以下内容。正如我在上面的评论中所说,Activity仍然需要com.google.gwt.event.shared.EventBus类。为了避免不推荐的警告,我执行了以下操作(我使用GIN):
通过这样做,您将始终使用bindery包中“新”版本的事件总线中的对象。Ah!非GWT客户端非常有意义。如果您使用Activity和Places,则start方法中的Activity需要一个com.google.GWT.event.shared.EventBusThanks指向问题链接。我会直接遇到这个问题。我也有同样的困境。也许,其他很多人都有。我忽略了不推荐的建议,而是使用旧的软件包,因为谷歌已经在那里制造了一个混乱。
public class GinClientModule extends AbstractGinModule {
@Override
protected void configure() {
bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class);
...
}
@Provides
@Singleton
public com.google.gwt.event.shared.EventBus adjustEventBus(
EventBus busBindery) {
return (com.google.gwt.event.shared.EventBus) busBindery;
}
...