当前位置:  开发笔记 > 编程语言 > 正文

通用,注释驱动的事件通知框架

如何解决《通用,注释驱动的事件通知框架》经验,为你挑选了1个好方法。

虽然Java之前的简单,界面驱动的事件通知框架已经存在于寒武纪之前(例如java.beans.PropertyChangeSupport),但是框架使用注释驱动的事件通知变得越来越流行.

有关示例,请参阅JBossCache 2.2.listener类对其侦听器方法进行了注释,而不是符合严格的接口.这更容易编程,更容易阅读,因为您不必编写您不感兴趣的侦听器回调的空实现(是的,我知道侦听器适配器超类).

以下是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");
   }

}

问题在于,由于它的注释 - 反射特性,它更多地是编写框架以支持这种事情的参与过程.

所以,在我开始编写通用框架之前,我希望有人已经完成了它.有没有人遇到这样的事情?



1> Hendy Irawan..:

您今天已经可以使用EventBus执行此操作.

以下示例来自EventBus入门指南.状态栏根据已发布的事件进行更新,无需将状态栏控件/窗口小部件注册为发布者的侦听器.如果没有EventBus,则需要将状态栏添加为许多类的侦听器.也可以随时创建和销毁状态栏.

public StatusBar extends JLabel {
    public StatusBar() {
        AnnotationProcessor.process(this);
    }
    @EventSubscriber(eventClass=StatusEvent.class)
    public void updateStatus(StatusEvent statusEvent) {
        this.setText(statusEvent.getStatusText();
    }
}

一个类似的项目是ELF(事件监听器框架),但似乎不太成熟.

我目前正在研究发布 - 订阅事件驱动编程的事件通知框架 Kev的Spring与Java EE Dev以及后续文章.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有