【Spring源码】Spring Event事件
Spring Event 是一种轻量级的消息传递机制,可以在Spring应用的各个组件之间进行通信。
在Spring中,事件通过ApplicationEvent类和ApplicationListener接口来实现。ApplicationEvent是事件的类,ApplicationListener是监听器的接口。
以下是一个简单的Spring Event的例子:
- 自定义事件,继承ApplicationEvent
public class MyEvent extends ApplicationEvent {
private String message;
public MyEvent(Object source, String message) {
super(source);
this.message = message;
}
public String getMessage() {
return message;
}
}
- 创建监听器,实现ApplicationListener接口
public class MyListener implements ApplicationListener<MyEvent> {
@Override
public void onApplicationEvent(MyEvent myEvent) {
System.out.println("Event received: " + myEvent.getMessage());
}
}
- 发布事件
@Configuration
public class EventConfiguration {
@Bean
public MyListener myListener() {
return new MyListener();
}
@Bean
public ApplicationEventPublisher applicationEventPublisher(ApplicationContext applicationContext) {
return applicationContext;
}
}
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(EventConfiguration.class);
ApplicationEventPublisher publisher = context.getBean(ApplicationEventPublisher.class);
MyEvent event = new MyEvent("hello", "Hello World!");
publisher.publishEvent(event);
context.close();
}
}
在这个例子中,我们定义了一个自定义事件MyEvent和一个监听器MyListener。在配置类EventConfiguration中,我们定义了两个Bean,一个是MyListener,另一个是ApplicationEventPublisher,它实际上是ApplicationContext,可以用来发布事件。
在Main类的main方法中,我们创建了一个AnnotationConfigApplicationContext,加载了EventConfiguration配置类。然后我们通过ApplicationContext发布了一个MyEvent事件。
运行Main的main方法,控制台将输出:"Event received: Hello World!",表示事件已被监听器接收。
这就是Spring Event的一个简单示例。在实际应用中,你可以使用Spring Event来进行解耦,通知系统中的其他部分发生了某些重要的事情。
评论已关闭