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?

questionAnswers(8)

yourAnswerToTheQuestion