Spring组件实现事件发布订阅-全网最详细介绍
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEvent;
// 自定义事件,继承自ApplicationEvent
public class CustomEvent extends ApplicationEvent {
private String message;
public CustomEvent(Object source, String message) {
super(source);
this.message = message;
}
public String getMessage() {
return message;
}
}
// 事件监听器,实现ApplicationListener接口
public class CustomListener implements ApplicationListener<CustomEvent> {
@Override
public void onApplicationEvent(CustomEvent event) {
System.out.println("监听到事件:" + event.getMessage());
}
}
// 事件发布器,使用ApplicationEventPublisher发布事件
public class CustomPublisher {
private ApplicationEventPublisher publisher;
public CustomPublisher(ApplicationEventPublisher publisher) {
this.publisher = publisher;
}
public void publish(String message) {
CustomEvent event = new CustomEvent(this, message);
publisher.publishEvent(event);
}
}
// 使用示例
public class Example {
public static void main(String[] args) {
// 创建Spring上下文
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
// 注册事件监听器
context.register(CustomListener.class);
// 启动上下文
context.refresh();
// 获取事件发布器并发布事件
CustomPublisher publisher = context.getBean(CustomPublisher.class);
publisher.publish("发布事件");
// 关闭上下文
context.close();
}
}
这段代码演示了如何在Spring应用中创建和发布自定义事件,并且如何注册监听器来响应这些事件。首先定义了一个CustomEvent
类,继承自ApplicationEvent
,用于封装事件数据。然后实现了CustomListener
类,它实现了ApplicationListener
接口,用于监听CustomEvent
事件并处理它们。CustomPublisher
类包含了一个方法用于发布事件。最后,在Example
类的main
方法中,我们创建了Spring的上下文,注册了事件监听器,发布了一个事件,并关闭了上下文。
评论已关闭