Подтвердить что ты не робот

Какой GWT EventBus следует использовать?

В 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 также скрывает ряд устаревших методов

Итак, какую реализацию я должен использовать? (Я на GWT 2.4)

4b9b3361

Ответ 1

Как правило, вы должны использовать его в com.google.web.bindery. Единственная версия, которая использовалась в com.google.gwt.event, но когда RequestFactory и AutoBeans были перемещены из самого GWT и в com.google.web.bindery, чтобы они могли работать с клиентами, не являющимися GWT.

Если вы используете версию com.google.web.bindery в своих презентаторах и т.д., это упростит использование внешних приложений GWT, если вам нужно. Вы также не получите предупреждения об устаревании при передаче этого экземпляра в PlaceController и другие классы, которые используют EventBus.

Ответ 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;
    }

...

При этом вы всегда будете использовать объект из "новой" версии шины событий в пакете bindery.

Ответ 3

Если вы используете "Действия", вам, вероятно, придется использовать устаревший, по крайней мере, до тех пор, пока они не очистят весь API: http://code.google.com/p/google-web-toolkit/issues/detail?id=6653.

Ответ 4

Сделать выбор еще более сложным. Я использую guava в своем приложении GWT, и ребята из Google добавили еще один EventBus (даже более неполная функция).

Возможно, этим парням нужно сидеть вместе и определить ОДИНУЮ реализацию, чтобы управлять ими все?

Очевидно, я хотел бы избежать всех зависимостей от GWT для кода, который строго не используется в коде GWT, поэтому Guava выглядел мне интересным.