Spring事件监听机制
Spring事件监听机制
简单来说,就是当代码执行到激发事件的那一行时,由spring发布一个事件,这个事件会被设置好的监听器所捕获,然后进行某种处理,这就是事件监听
1.设置事件
如我们需要激发一个调用RabbitMq的事件,我们需要继承ApplicationEvent类,继承后重写构造方法,很简单只要返回这个参数source即可
/**
* @author Syf200208161018
* @date 2022/12/5 20:06
* @ClassName:MQSendEvent
* @Effect:MQSendEvent is used for RabbitMq发送事件
*/
public class MQSendEvent extends ApplicationEvent {
public MQSendEvent(Object source) {
super(source);
}
}
2.设置监听器
监听器中需要实现ApplicationListener<T>
其中的泛型就是事件的类型,说明我们这个监听器是专门监听这个事件的!
然后去实现onApplicationEvent
这个方法
/**
* @author Syf200208161018
* @date 2022/12/5 20:08
* @ClassName:MQSendEventListenner
* @Effect:MQSendEventListenner is used for
*/
@Service
public class MQSendEventListener implements ApplicationListener<MQSendEvent> {
@Autowired
private EpropMQClient mqClient;
/**
* 监听发布的事件
* @param event
*/
@Override
public void onApplicationEvent(MQSendEvent event) {
System.out.println(event.getSource());
//发布MQ发送消息服务
mqClient.sendDeleteProjectMail(String.valueOf(event.getSource()));
}
}
3.在代码中使用
我们需要把应用程序上下文注入
@Autowired
private ApplicationContext applicationContext;
注入后通过Application Context激发事件
//2.激发事件
applicationContext.publishEvent(new MQSendEvent(memberInfo.getUsername()));