Which GWT EventBus should I use?

后端 未结 4 1666
时光取名叫无心
时光取名叫无心 2021-02-18 16:43

In the gwt-user.jar there are 2 EventBus interfaces and SimpleEventBus implmentations.

com.google.gwt.event.shared.EventBus and com.google.web.bindery

相关标签:
4条回答
  • 2021-02-18 17:17

    To make the choice even more complex. I am using guava in my GWT application and the google guys have added yet another EventBus in there (even less feature complete).

    Maybe those guys need to sit together and define ONE implementation to rule them all ?

    Obviously I would like to avoid all dependencies on GWT for code that is not strictly used in GWT code, so the Guava one looked interesting to me.

    0 讨论(0)
  • 2021-02-18 17:30

    Generally you should use the one in com.google.web.bindery. The only version used to be in com.google.gwt.event, but when RequestFactory and AutoBeans were moved out of GWT itself and into com.google.web.bindery so they could work in non-GWT clients.

    If you use the com.google.web.bindery version in your presenters and such, it will make it easier to use outside GWT apps, should you need to. You'll also not get deprecation warnings when passing that instance to PlaceController and other classes that use EventBus.

    0 讨论(0)
  • 2021-02-18 17:37

    I know this question has already an answer but might be worth while adding the following. As I said in my comment above, Activity still needs the com.google.gwt.event.shared.EventBus class. To avoid deprecated warnings, I did the following (I use 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;
        }
    
    ...
    

    By doing this, you will always be using the object from the "new" version of Event bus in the bindery package.

    0 讨论(0)
  • 2021-02-18 17:41

    If you use Activities, then you'll probably have to use the deprecated one, at least until they clean up the whole API: http://code.google.com/p/google-web-toolkit/issues/detail?id=6653.

    0 讨论(0)
提交回复
热议问题