Spring Event
是 Spring
框架提供的一种事件驱动机制,允许应用程序中的不同组件之间进行解耦的通信。
通过使用事件发布-订阅模式,开发者可以轻松地实现松耦合的组件间通信,提高代码的可维护性和扩展性。
组成部分
Event
(事件):
- 表示应用程序中发生的某个特定事件,通常是一个简单的
POJO
类,继承自ApplicationEvent
。
Event Publisher
(事件发布者):
- 负责发布事件的对象,通常是一个实现了
ApplicationEventPublisher
接口的Bean
。
Event Listener
(事件监听器):
- 负责处理事件的对象,通常是一个带有
@EventListener
注解的方法。
基本使用
创建一个事件:
public class MessageEvent<T> extends ApplicationEvent {
//消息体
private T msg;
//消息码
private String code;
}
创建一个监听器:
public class MessageHander {
@EventListener(MessageEvent.class)
public void onMessage(MessageEvent event){
//业务逻辑
System.out.println("A接收到消息:"+event.getMsg());
}
}
public class MessageHanders implements ApplicationListener<MessageEvent<?>> {
@Override
public void onApplicationEvent(MessageEvent<?> messageEvent) {
//业务逻辑
System.out.println("B接收到消息:"+messageEvent.getMsg());
}
}
发布事件:
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));
}
}