SpringBoot 如何使用 ApplicationEventPublisher 发布事件
在 SpringBoot 应用程序中,我们可以使用 ApplicationEventPublisher 接口来发布事件。事件可以是任何对象,当该对象被发布时,所有监听该事件的监听器都会收到通知。
下面是一个简单的示例,演示如何在 SpringBoot 应用程序中使用 ApplicationEventPublisher 发布事件。

创建事件
我们首先需要创建一个事件类,例如:
public class MyEvent {
private String message;
public MyEvent(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
这个事件类包含一个消息属性,用于描述事件所代表的内容。
创建监听器
我们还需要创建一个监听器来处理事件。例如:
@Component
public class MyEventListener {
@EventListener
public void onApplicationEvent(MyEvent event) {
System.out.println("Received event: " + event.getMessage());
}
}
这个监听器使用 @EventListener 注解来标记它所监听的事件类型,当该事件被发布时,onApplicationEvent 方法将被调用。
发布事件
现在我们可以在应用程序中使用 ApplicationEventPublisher 接口来发布事件了。例如:
@RestController
public class MyController {
private final ApplicationEventPublisher eventPublisher;
public MyController(ApplicationEventPublisher eventPublisher) {
this.eventPublisher = eventPublisher;
}
@GetMapping("/publish")
public String publishEvent() {
MyEvent event = new MyEvent("Hello, world!");
eventPublisher.publishEvent(event);
return "Event published";
}
}
这个控制器类中包含一个 ApplicationEventPublisher 实例,我们在其中创建了一个 MyEvent 对象,并使用 publishEvent 方法将其发布。当 publishEvent 方法被调用时,所有监听 MyEvent 类型事件的监听器都会收到通知。
完整代码
下面是完整的代码示例:
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
public class MyEvent {
private String message;
public MyEvent(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
@Component
public class MyEventListener {
@EventListener
public void onApplicationEvent(MyEvent event) {
System.out.println("Received event: " + event.getMessage());
}
}
@RestController
public class MyController {
private final ApplicationEventPublisher eventPublisher;
public MyController(ApplicationEventPublisher eventPublisher) {
this.eventPublisher = eventPublisher;
}
@GetMapping("/publish")
public String publishEvent() {
MyEvent event = new MyEvent("Hello, world!");
eventPublisher.publishEvent(event);
return "Event published";
}
}
结论
在 SpringBoot 应用程序中,我们可以使用 ApplicationEventPublisher 接口来发布事件。我们首先需要创建一个事件类,然后创建一个监听器来处理该事件。最后,在应用程序中使用 ApplicationEventPublisher 实例来发布事件。
![[Leetcode] 0733. 图像渲染](https://img-blog.csdnimg.cn/img_convert/2bf17d466f503933618b0e0d83b858c0.jpeg)















