ApplicationEventPublisher是Spring框架提供的一个接口,用于向应用程序内部的其他组件发布事件。它定义了一个方法publishEvent,该方法接受一个实现了ApplicationEvent接口的事件对象作为参数,可以将该事件传递给所有注册了监听该事件的监听器。
下面是一个使用ApplicationEventPublisher的示例代码:
@Service
public class OrderService {
@Autowired
private ApplicationEventPublisher publisher;
public void createOrder(Order order) {
// 创建订单逻辑
// 发布订单创建事件
OrderCreatedEvent event = new OrderCreatedEvent(order);
publisher.publishEvent(event);
}
}
在这个示例中,OrderService类通过@Autowired注解获取了一个ApplicationEventPublisher对象。当创建订单时,它会创建一个OrderCreatedEvent事件对象,并通过publishEvent方法将该事件发布到应用程序中。
然后事件处理有2种方式,实现接口 ApplicationListener<OrderCreatedEvent>
或使用注解 @EventListener
。
- 使用实现
ApplicationListener
接口的方式
需要重写onApplicationEvent()
方法,实现对事件的监听和逻辑处理,例如:
public class OrderEventListener implements ApplicationListener<OrderCreatedEvent> {
@Override
public void onApplicationEvent(OrderCreatedEvent event) {
// 监听到OrderCreatedEvent事件后的逻辑处理
...
}
}
- 通过 @EventListener 注解的方式
需要将方法标记为Spring事件监听的回调方法,例如:
@Component
public class OrderEventListener2 {
@EventListener
public void onOrderCreated(OrderCreatedEvent event) {
// 监听到OrderCreatedEvent事件后的逻辑处理
...
}
}
可以看到,使用 @EventListener 注解的方式更加简洁清晰,不需要额外实现接口,也可以通过方法名称来区分监听不同的事件。
网友评论