Guide zu Guavas EventBus

Leitfaden zu Guavas EventBus

1. Überblick

Die Guava-Bibliothek bietetEventBus, mit denen die Kommunikation zwischen Komponenten veröffentlicht und abonniert werden kann. In diesem Tutorial werden wir uns ansehen, wie einige der Funktionen vonEventBus verwendet werden.

2. Konfiguration

Zu Beginn fügen wir die Abhängigkeit der Google Guava-Bibliothek inpom.xml: hinzu


    com.google.guava
    guava
    21.0

Die neueste Version finden Sie unterhere.

3. Verwenden SieEventBus

Beginnen wir mit einem einfachen Beispiel.

3.1. Konfiguration

Wir beginnen mit der Betrachtung desEventBus-Objekts. Es kann Listener registrieren und Events posten. Die Verwendung ist so einfach wie das Instanziieren der Klasse:

EventBus eventBus = new EventBus();

Die Guava-Bibliothek gibt Ihnen die Freiheit, dieEventBus auf eine Weise zu verwenden, die Ihren Entwicklungsanforderungen am besten entspricht.

3.2. Listener erstellen

Wir erstellen eine Listener-Klasse, die über Handler-Methoden verfügt, um bestimmte Ereignisse zu empfangen. Wir kommentieren die Handler-Methoden mit@Subscribe. Die Methode akzeptiert als Argument ein Objekt des gleichen Typs wie das Ereignis, das gebucht wird:

public class EventListener {

    private static int eventsHandled;

    @Subscribe
    public void stringEvent(String event) {
        eventsHandled++;
    }
}

3.3. Zuhörer registrieren

Wir können ein Ereignis abonnieren, indem wir unsere KlasseEventListenerfürEventBusregistrieren:

EventListener listener = new EventListener();
eventBus.register(listener);

3.4. Zuhörer abmelden

Wenn wir aus irgendeinem Grund die Registrierung einer Klasse ausEventBus aufheben möchten, ist dies ebenfalls einfach möglich:

eventBus.unregister(listener);

3.5. Ereignisse veröffentlichen

Wir können Ereignisse auch mitEventBus posten:

@Test
public void givenStringEvent_whenEventHandled_thenSuccess() {
    eventBus.post("String Event");
    assertEquals(1, listener.getEventsHandled());
}

3.6. Benutzerdefinierte Ereignisse veröffentlichen

Wir können auch eine benutzerdefinierte Ereignisklasse angeben und dieses Ereignis veröffentlichen. Wir beginnen mit der Erstellung eines benutzerdefinierten Ereignisses:

public class CustomEvent {
    private String action;

    // standard getters/setters and constructors
}

Hinzufügen einer Handlermethode in der KlasseEventListenerfür dieses Ereignis:

@Subscribe
public void someCustomEvent(CustomEvent customEvent) {
    eventsHandled++;
}

Wir können jetzt unsere benutzerdefinierte Veranstaltung posten:

@Test
public void givenCustomEvent_whenEventHandled_thenSuccess() {
    CustomEvent customEvent = new CustomEvent("Custom Event");
    eventBus.post(customEvent);

    assertEquals(1, listener.getEventsHandled());
}

3.7. Behandlung einesUnsubscribed-Ereignisses

Wir erhalten eineDeadEvent-Klasse, mit der wir alle Ereignisse behandeln können, die keine Listener haben. Wir können eine Methode hinzufügen, um die KlasseDeadEventzu behandeln:

@Subscribe
public void handleDeadEvent(DeadEvent deadEvent) {
    eventsHandled++;
}

4. Fazit

In diesem Tutorial haben wir ein einfaches Beispiel als Anleitung zur Verwendung der GuavaEventBusverwendet.

Sie finden den vollständigen Quellcode und alle Codefragmente für diesen Artikelover on GitHub.