首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

自各儿做的事件监听处理小框架

2012-11-20 
自己做的事件监听处理小框架基于SPRING的事件处理其实很简单,初学者不必一开始就担心搞不懂,本文先是介绍

自己做的事件监听处理小框架
    基于SPRING的事件处理其实很简单,初学者不必一开始就担心搞不懂,本文先是介绍完全基于SPRING的事件监听实现(熟识Spring事件监听的朋友应该跳过第一节),然后依葫芦画瓢自已做一个性能更好事件监听小框架,最后在回贴中加入了注解版。
    为何要使用事件监听,而不是直接调用?打个比方,在系统删除一个用户时,需要把用户的其他信息和行为记录一起删除,此时最容易想到的是:删除用户时,调用其他Service类接口删除与之相关的信息和用户行为记录,但是用户是一个基础模块,随着系统模块不断增加,会有越来越多的模块与之关联,按以上方案,每增加一个与用户相关的模块,那么删除用户时就要把这个模块的信息也一起删除,这样用户这个模块就与这些业务模块偶合在一起了,只要系统不断的增加或减少模块,用户模块就永远都改不完。(以上逻辑仅为说明问题)
    如果采用事件监听,那么在删除一个用户时,发布一事件就完事了,所有相关的模块监听此事件,在事件处理中删除本模块对应的数据,那么用户模块也不会与这些模块有任何偶合了。
    好,回到主题,
    1、完全基于SPRING的事件监听与处理:
    首先,SERVICE总接口类继承org.springframework.context.ApplicationListener接口,并且在SERVICE的抽象类中实现此接口的方法,SERVICE总接口代码:

//不再需要每个具体业务都实现IBaseEventListener接口public class OtherServiceImpl extends AbstractBaseService implements OtherService{       private IBaseDAO otherDao;         /**       * 重写父类的方法,处理用户删除事件       */    @HandleEvent(events={UserDeleteEvent.class,UserUpdateEvent.class})    public void onBaseEvent(BaseEvent baseEvent){           if(baseEvent instanceof UserDeleteEvent){//如果是用户删除事件               otherDao.deleteOtherData(((User)baseEvent.getSource()).getId());           }else{        //....        }    }   }  


全部完成 11 楼 lgdlgd 2009-12-04   呵呵,想弄个良好贴还真有点难啊... 12 楼 itstarting 2010-03-30   写的不错,考虑一下再进一步,加上具备异步处理能力的事件框架

良好贴若干年前容易,现在难了:) 13 楼 lgdlgd 2010-03-30   itstarting 写道写的不错,考虑一下再进一步,加上具备异步处理能力的事件框架
嗯,加个多线程处理倒是简单得很,可要考虑事务同步的问题上麻烦一些,最近都有没有这个时间去做啊,呵呵,有空还是要完善一下 14 楼 loginwolf 2010-06-21   java 事件监听

热点排行