SpringEvent基本介绍!

Spring EventSpring 框架提供的一种事件驱动机制,允许应用程序中的不同组件之间进行解耦的通信。

通过使用事件发布-订阅模式,开发者可以轻松地实现松耦合的组件间通信,提高代码的可维护性和扩展性。

组成部分

Event(事件):

  • 表示应用程序中发生的某个特定事件,通常是一个简单的 POJO 类,继承自 ApplicationEvent

Event Publisher(事件发布者):

  • 负责发布事件的对象,通常是一个实现了 ApplicationEventPublisher 接口的 Bean

Event Listener(事件监听器):

  • 负责处理事件的对象,通常是一个带有 @EventListener 注解的方法。

基本使用

创建一个事件:

1
2
3
4
5
6
public class MessageEvent<T> extends ApplicationEvent {
//消息体
private T msg;
//消息码
private String code;
}

创建一个监听器:

1
2
3
4
5
6
7
public class MessageHander  {
@EventListener(MessageEvent.class)
public void onMessage(MessageEvent event){
//业务逻辑
System.out.println("A接收到消息:"+event.getMsg());
}
}
1
2
3
4
5
6
7
public class MessageHanders implements ApplicationListener<MessageEvent<?>> {
@Override
public void onApplicationEvent(MessageEvent<?> messageEvent) {
//业务逻辑
System.out.println("B接收到消息:"+messageEvent.getMsg());
}
}

发布事件:

1
2
3
4
5
6
7
8
9
10
public class ClazzServiceImpl implements ClazzService {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;

public void Notice(String code, String msg) {
//雨雾逻辑
System.out.println("发布消息");
applicationEventPublisher.publishEvent(new MessageEvent<String>(msg, code));
}
}