在SERVICE的抽象类中去掉onApplicationEvent方法,不需要了,改写发布事件的方法,修改后变成这样
- import org.springframework.context.ApplicationEvent;
-
-
-
-
- public abstract class AbstractBaseService implements IBaseService {
-
-
-
- protected final void publishEvent(BaseEvent event) {
-
- EventController.publishEvent(event);
- }
-
-
-
-
- public void onBaseEvent(BaseEvent event) {
- }
-
-
-
-
- public List<Class<? extends BaseEvent>> getEventClasses(){
- return null;
- }
-
- }
到此框架就完成了,UserServiceImpl删除用户时发布事件的代码还和原来一样,不需要改变,只是监听类要变一下,不再实现ApplicationListener接口,改而实现IBaseEventListener接口,不过不需要再具体类中实现,因为已经在顶层接口中继承了,代码
- public class OtherServiceImpl extends AbstractBaseService {
- private IBaseDAO otherDao;
-
-
-
-
- protected void onBaseEvent(BaseEvent baseEvent){
-
- UserDeleteEvent event = (UserDeleteEvent)baseEvent;
- otherDao.deleteOtherData(event.getSource().getId());
- }
-
-
-
-
- public List<Class<? extends BaseEvent>> getEventClasses() {
- List<Class<? extends BaseEvent>> eventClasses = new ArrayList<Class<? extends BaseEvent>>(1);
-
- eventClasses.add(UserDeleteEvent.class);
- return eventClasses;
- }
- }