Ogólne, oparte na adnotacjach ramy powiadamiania o zdarzeniach
Podczas gdy proste, oparte na interfejsach środowiska powiadamiania o zdarzeniach w Javie istnieją już od czasów przed kambrem (np. Java.beans.PropertyChangeSupport), coraz bardziej popularne staje się używanie przez frameworki powiadomień o zdarzeniach opartych na adnotacjach.
Na przykład patrzJBossCache 2.2. Klasa słuchacza ma przypisane metody nasłuchiwania, a nie zgodne ze sztywnym interfejsem. Jest to raczej łatwiejsze do zaprogramowania i łatwiejsze do odczytania, ponieważ nie musisz pisać pustych implementacji wywołań zwrotnych nasłuchiwania, które Cię nie interesują (i tak, wiem o superklasach adaptera nasłuchującego).
Oto przykład z dokumentów 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");
}
}
Problem z tym polega na tym, że jest to bardziej zaangażowany proces pisania ram do obsługi tego rodzaju rzeczy, ze względu na ich charakter adnotacji-refleksji.
Tak więc, zanim opuściłem drogę pisania ogólnych ram, miałem nadzieję, że ktoś już to zrobił. Czy ktoś natknął się na coś takiego?