Java の単純なインターフェース駆動型のイベント通知フレームワークはカンブリア紀以前から存在していましたが (例: java.beans.PropertyChangeSupport)、代わりにアノテーション駆動型のイベント通知を使用するフレームワークがますます一般的になりつつあります。
例については、JBossCache 2.2を参照してください。リスナー クラスには、厳密なインターフェイスに準拠するのではなく、注釈が付けられたリスナー メソッドがあります。これは、関心のないリスナー コールバックの空の実装を記述する必要がないため、プログラミングがかなり簡単で、読み取りも簡単です (もちろん、リスナー アダプターのスーパークラスについては知っています)。
JBossCache ドキュメントのサンプルを次に示します。
@CacheListener
public class MyListener {
@CacheStarted
@CacheStopped
public void cacheStartStopEvent(Event e) {
switch (e.getType()) {
case Event.Type.CACHE_STARTED:
System.out.println("Cache has started");
break;
case Event.Type.CACHE_STOPPED:
System.out.println("Cache has stopped");
break;
}
}
@NodeCreated
@NodeRemoved
@NodeVisited
@NodeModified
@NodeMoved
public void logNodeEvent(NodeEvent ne) {
log("An event on node " + ne.getFqn() + " has occured");
}
}
これに関する問題は、フレームワークの注釈反射の性質のために、この種のものをサポートするためにフレームワークを作成することは、非常に複雑なプロセスであることです。
そのため、一般的なフレームワークを書き始める前に、誰かが既にそれを行っていることを期待していました。誰かがそのようなことに出くわしたことがありますか?