Leitfaden zu Guavas EventBus

1. Übersicht

Die Guava-Bibliothek bietet den EventBus, der die Publish-Subscribe-Kommunikation zwischen Komponenten ermöglicht. In diesem Tutorial erfahren Sie, wie Sie einige Funktionen des EventBus verwenden .

2. Setup

Zu Beginn fügen wir die Abhängigkeit der Google Guava-Bibliothek in die Datei pom.xml ein:

 com.google.guava guava 29.0-jre 
Die neueste Version finden Sie hier.

3. Verwenden des EventBus

Beginnen wir mit einem einfachen Beispiel.

3.1. Konfiguration

Wir beginnen mit dem Betrachten des EventBus- Objekts. Es kann Listener registrieren und Ereignisse posten. Die Verwendung ist so einfach wie das Instanziieren der Klasse:

EventBus eventBus = new EventBus();

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

3.2. Listener erstellen

Wir erstellen eine Listener-Klasse mit Handler-Methoden zum Empfangen bestimmter Ereignisse. Wir kommentieren die Handler-Methoden mit @Subscribe . Die Methode akzeptiert als Argument ein Objekt des gleichen Typs wie das Ereignis, das veröffentlicht 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 EventListener- Klasse im EventBus registrieren :
EventListener listener = new EventListener(); eventBus.register(listener);

3.4. Zuhörer abmelden

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

eventBus.unregister(listener);

3.5. Ereignisse veröffentlichen

Mit dem EventBus können wir auch Events 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 EventListener- Klasse für dieses Ereignis:

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

Wir können jetzt unser benutzerdefiniertes Ereignis veröffentlichen:

@Test public void givenCustomEvent_whenEventHandled_thenSuccess() { CustomEvent customEvent = new CustomEvent("Custom Event"); eventBus.post(customEvent); assertEquals(1, listener.getEventsHandled()); }

3.7. Behandlung eines nicht abonnierten Ereignisses

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

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

4. Fazit

In diesem Tutorial haben wir ein einfaches Beispiel als Anleitung zur Verwendung des Guava EventBus verwendet .

Den vollständigen Quellcode und alle Codefragmente für diesen Artikel finden Sie auf GitHub.