グアバのEventBusガイド

1概要

Guavaライブラリは EventBus を提供しています。このチュートリアルでは、 EventBus のいくつかの機能の使い方を見ていきます。

2セットアップ

まず始めに、__pom.xmlにGoogle Guavaライブラリの依存関係を追加します。

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>21.0</version>
</dependency>

最新版はhttps://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22com.google.guava%22%20AND%20a%3A%22guava%22[here]にあります。

3 EventBus を使う

簡単な例を使って始めましょう。

3.1. セットアップ

EventBus オブジェクトを見ることから始めます。リスナーを登録してイベントを投稿することができます。それを使うのはクラスをインスタンス化するのと同じくらい簡単です:

EventBus eventBus = new EventBus();

Guavaライブラリはあなたの開発ニーズに最も適した方法で EventBus を使用する自由をあなたに与えます。

3.2. リスナーを作成する

特定のイベントを受け取るためのハンドラメソッドを持つリスナクラスを作成します。ハンドラメソッドに @ Subscribe というアノテーションを付けます。このメソッドは、ポストされているイベントと同じタイプのオブジェクトを引数として受け入れます。

public class EventListener {

    private static int eventsHandled;

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

3.3. リスナーを登録する

EventBus EventListener クラスを登録することでイベントを購読できます。

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

3.4. リスナーの登録解除

何らかの理由で EventBus からクラスを登録解除したい場合は、それも簡単に実行できます。

eventBus.unregister(listener);

3.5. イベントの投稿

EventBus を使用してイベントを投稿することもできます。

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

3.6. カスタムイベントの投稿

カスタムイベントクラスを指定してそのイベントを投稿することもできます。カスタムイベントを作成することから始めます。

public class CustomEvent {
    private String action;

   //standard getters/setters and constructors
}

そのイベントの EventListener クラスにハンドラメソッドを追加します。

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

カスタムイベントを投稿することができます。

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

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

3.7. 登録解除イベントの処理

リスナーを持たないイベントを処理できるようにする DeadEvent クラスが提供されています。 DeadEvent クラスを処理するためのメソッドを追加することができます。

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

4結論

このチュートリアルでは、Guava EventBus の使用方法に関するガイドとして簡単な例を使用しました。

この記事https://github.com/eugenp/tutorials/tree/master/guava[over on GitHub]の完全なソースコードとすべてのコードスニペットを見つけることができます。

前の投稿:Gradleでファットジャーを作る
次の投稿:Java Web Weekly、第131号