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

spring 自定义事件 处理机制 二

2012-09-08 
spring 自定义事件 处理机制 2在SERVICE的抽象类中去掉onApplicationEvent方法,不需要了,改写发布事件的方

spring 自定义事件 处理机制 2

在SERVICE的抽象类中去掉onApplicationEvent方法,不需要了,改写发布事件的方法,修改后变成这样?
Java代码?

  1. import?org.springframework.context.ApplicationEvent;??
  2. ??
  3. /**?
  4. ?*?实现顶层接口的抽象类?
  5. ?*/??
  6. public?abstract?class?AbstractBaseService?implements?IBaseService?{??
  7. ?????????/**?
  8. ?????*?发布事件?
  9. ?????*/??
  10. ????protected?final?void?publishEvent(BaseEvent?event)?{??
  11. ????????//使用自已事件工具类发布事件??
  12. ????????EventController.publishEvent(event);??
  13. ????}??
  14. ??
  15. ?????????/**???
  16. ??????????*?默认实现处理事件的方法??
  17. ????????????*/????
  18. ?????????public?void?onBaseEvent(BaseEvent?event)?{?????
  19. ?????????}??
  20. ??
  21. ?????????/**?
  22. ?????*?注意虽然也是在顶层接口中都实现了事件监听,但是只有这个方法有返回值时,才真正的会被调用?
  23. ?????*/??
  24. ????public?List<Class<??extends?BaseEvent>>?getEventClasses(){??
  25. ???????????????????return?null;??
  26. ?????????}??
  27. ??
  28. }??

??? 到此框架就完成了,UserServiceImpl删除用户时发布事件的代码还和原来一样,不需要改变,只是监听类要变一下,不再实现ApplicationListener接口,改而实现IBaseEventListener接口,不过不需要再具体类中实现,因为已经在顶层接口中继承了,代码?
Java代码?
  1. public?class?OtherServiceImpl?extends?AbstractBaseService?{??
  2. ????private?IBaseDAO?otherDao;??
  3. ??
  4. ????/**?
  5. ?????*?重写父类的方法,处理用户删除事件?
  6. ?????*/??
  7. ????protected?void?onBaseEvent(BaseEvent?baseEvent){??
  8. ??????????????????//如果本类只处理一个事件,这里就不需要再类型判断了??
  9. ??????????????????UserDeleteEvent?event?=?(UserDeleteEvent)baseEvent;??
  10. ????????otherDao.deleteOtherData(event.getSource().getId());??
  11. ????}??
  12. ???????????
  13. ?????????/**?
  14. ?????*?返回本类所要处理所有事件?
  15. ?????*/??
  16. ????public?List<Class<??extends?BaseEvent>>?getEventClasses()?{??
  17. ????????List<Class<??extends?BaseEvent>>?eventClasses?=?new?ArrayList<Class<??extends?BaseEvent>>(1);??
  18. ????????//本类只监听用户删除事件??
  19. ????????eventClasses.add(UserDeleteEvent.class);??
  20. ????????return?eventClasses;??
  21. ????}??
  22. } ?

热点排行