本文内容是我工作中使用的方式,还有其他实现方式,参考:(1条消息) SpringBoot-事件监听的4种实现方式_ignorewho的博客-优快云博客_springboot监听https://blog.youkuaiyun.com/ignorewho/article/details/80702827
自定义事件:继承自ApplicationEvent抽象类,然后定义自己的构造器
自定义监听:实现ApplicationListener<T>接口,然后实现onApplicationEvent方法
事件发布 : 继承ApplicationEventPublisherAware
1. 自定义事件
public class MessageSendEvent extends ApplicationEvent {
/**
* 消息内容
*/
private MessageSendEventData data;
public MessageSendEvent(Object source) {
super(source);
}
public MessageSendEvent(Object source, MessageSendEventData data) {
super(source);
this.data = data;
}
public MessageSendEventData getData() {
return data;
}
}
2.自定义监听
@Component
public class MessageSendService extends ApplicationListener<MessageSendEvent> {
@Override
void onApplicationEvent(MessageSendEvent messageSendEvent);
}
3.事件发布
@Service
public class UserServiceImpl implements ApplicationEventPublisherAware {
private ApplicationEventPublisher applicationEventPublisher;
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
this.applicationEventPublisher = applicationEventPublisher;
}
public void send(MessageSendEventData data) {
applicationEventPublisher.publishEvent(new MessageSendEvent(this, data));
}
}