我应该使用哪个 GWT 事件总线?

2022-09-02 04:01:59

在 gwt-user 中.jar有 2 个 EventBus 接口和 SimpleEventBus implations。

com.google.gwt.event.shared.EventBus我将把它们称为“gwt.event”和“web.bindery”。com.google.web.bindery.event.shared.EventBus

查看JavaDocs和源代码,我可以看到gwt.event只是包装web.bindery事件。但是,gwt.event 实现还隐藏了许多已弃用的方法。

那么我应该使用哪种实现呢?(我在GWT 2.4上)


答案 1

通常,您应该使用 中的那个。唯一的版本曾经是 ,但是当 RequestFactory 和 AutoBeans 从 GWT 本身移出并移入时,它们可以在非 GWT 客户端中工作。com.google.web.binderycom.google.gwt.eventcom.google.web.bindery

如果您在演示者等中使用该版本,它将使其更容易在GWT应用程序之外使用,如果需要的话。在将该实例传递给使用 EventBus 的其他类时,您也不会收到弃用警告。com.google.web.binderyPlaceController


答案 2

我知道这个问题已经有了答案,但在添加以下内容时可能值得。正如我在上面的评论中所说,Activity仍然需要com.google.gwt.event.shared.EventBus类。为了避免被弃用的警告,我做了以下操作(我使用GIN):

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;
    }

...

通过执行此操作,您将始终在绑定包中使用事件总线的“新”版本中的对象。


推荐