最近将系统中某个功能改为spring事件的方式,测试的时候发现整个系统有时候会死掉,不知道是事件广播什么地方用的不正确,请大家指教。
application_context.xml:<bean id="applicationEventMulticaster" class="org.springframework.context.event.SimpleApplicationEventMulticaster">
<property name="taskExecutor" ref="cacheThreadPoolExecutor" />
</bean><bean id="cacheThreadPoolExecutor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="queueCapacity" value="0" />
<property name="keepAliveSeconds" value="120" />
</bean>MessageEvent.java:package c;import org.springframework.context.ApplicationEvent;
public class MessageEvent extends ApplicationEvent { private static final long serialVersionUID = 7325055073045806732L; public MessageEvent(Object source) {
super(source);
}
}MessageListener.java:package com.bluedon.ism.commons.event;import javax.annotation.Resource;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Service;import c.MessageCenter;
import c.SendNoticeManagerService;@Service
public class MessageListener implements ApplicationListener<MessageEvent> {

@Resource(name = "sendNoticeManagerService")
private SendNoticeManagerService sendNoticeManagerService;

@Override
public void onApplicationEvent(MessageEvent event) {
MessageCenter msgCenter = (MessageCenter) event.getSource();

//非空判断等省略,sendNotice()方法声明及主体省略
sendNoticeManagerService.sendNotice(msgCenter.getAccountId(), msgCenter.getNoticeData(), msgCenter.getRe(),msgCenter.getNode() , msgCenter.getAudit());

}
public void setSendNoticeManagerService(
SendNoticeManagerService sendNoticeManagerService) {
this.sendNoticeManagerService = sendNoticeManagerService;
}
}在需要调用sendNotice()方法的类中相关代码:@Resource(name="applicationEventMulticaster")
    private ApplicationEventMulticaster applicationEventMulticaster; public void setApplicationEventMulticaster(
ApplicationEventMulticaster applicationEventMulticaster) {
this.applicationEventMulticaster = applicationEventMulticaster;
}
private void saves(){
NoticeData noticeData = new NoticeData(1, 2, "test", 1256, "221545121", 12);
MessageCenter msgCenter = new MessageCenter(noticeData, "user");
MessageEvent msgEvent = new MessageEvent(msgCenter);
applicationEventMulticaster.multicastEvent(msgEvent);
}
SpringJava事件