Типовые рамки уведомлений о событиях на основе аннотаций
В то время как простые документированные управляемые интерфейсом платформы уведомлений о событиях в 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");
}
}
Проблема в том, что это гораздо более сложный процесс, пишущий платформу для поддержки такого рода вещей, из-за природы ее аннотации-отражения.
Итак, прежде чем я начну писать общую структуру, я надеялся, что кто-то уже сделал это. Кто-нибудь сталкивался с такой вещью?