创业服务网站建设方案项目书,音乐APP网站开发,网站不做备案,网站有没有做网站地图怎么看文章目录 应用场景核心接口使用步骤异步事件事件排序 Spring 事件#xff08;Application Event#xff09;是 Spring 框架中实现观察者模式的一种方式#xff0c;可以通过发布者和监听器来处理事件#xff0c;常用于类之间解耦合、异步操作。 观察者模式#xff1a;观察者… 文章目录 应用场景核心接口使用步骤异步事件事件排序 Spring 事件Application Event是 Spring 框架中实现观察者模式的一种方式可以通过发布者和监听器来处理事件常用于类之间解耦合、异步操作。 观察者模式观察者模式委托和事件——老板来了我不知道 应用场景 举例几个具体的使用场景
用户注册后发送欢迎邮件用户注册成功后可以发布一个事件由监听该事件的邮件服务来发送欢迎邮件。订单处理订单创建后可以发布一个事件由库存管理、支付处理、物流跟踪等不同的服务来监听和处理。数据变更通知当数据库中的数据发生变化时可以发布一个事件由需要这些数据的其他服务来更新缓存或执行其他逻辑。日志记录和监控在关键操作执行时可以发布事件来进行日志记录或监控而不需要在业务逻辑中直接调用日志服务。 核心接口
ApplicationEvent所有事件的父类继承自 java.util.EventObject。ApplicationListener用于监听事件的接口它定义了一个 onApplicationEvent(E event) 方法当有事件发布时该方法会被调用。ApplicationEventPublisher用于发布事件的接口通常由 Spring 容器实现。ApplicationEventMulticaster用于管理事件监听器的注册和事件的广播。
使用步骤 定义事件创建一个继承自 ApplicationEvent 的类。 public class CustomEvent extends ApplicationEvent {private String message;// 构造器注入的方式记录事件msgpublic CustomEvent(Object source, String message) {super(source);this.message message;}public String getMessage() {return message;}
}注册监听器 创建一个实现 ApplicationListener 接口的类。 Component
public class CustomEventListener implements ApplicationListenerCustomEvent {Overridepublic void listener(CustomEvent event) {System.out.println(监听到事件发生啦- event.getMessage());}
}或者使用EventListener不必实现 ApplicationListener 接口在任何 Spring 管理的 bean 上直接声明事件监听方法。 Component
public class CustomEventListener {EventListenerpublic void listener(CustomEvent event) {System.out.println(监听到事件发生啦- event.getMessage());}
}指定条件如果需要根据条件来决定是否调用监听器方法可以在 EventListener 注解中使用 condition 属性。 EventListener(condition #event.message.contains(important))public void listener(CustomEvent event) {System.out.println(监听到事件发生啦- event.getMessage());}发布事件通过自动注入 ApplicationEventPublisher 来发布事件。 Component
public class CustomEventPublisher {Autowiredprivate final ApplicationEventPublisher publisher;public void publishCustomEvent(String message) {CustomEvent customEvent new CustomEvent(this, message);publisher.publishEvent(customEvent); //把消息装进事件中}
}配置和运行确保以上组件被 Spring 容器管理并调用 publishCustomEvent 方法来发布事件。 异步事件
Spring 也支持异步事件。要启用异步事件处理可以在配置中定义一个 Async 注解的方法。 AsyncEventListenerpublic void listener(CustomEvent event) {System.out.println(监听到事件发生啦- event.getMessage());}事件排序 如果需要确保事件的监听器按照特定的顺序执行可以使用 Order 注解或实现 Ordered 接口。
Order(1)
EventListener
public void listener(CustomEvent event) {System.out.println(监听到事件发生啦 - event.getMessage());
}import org.springframework.context.ApplicationListener;
import org.springframework.core.Ordered;public class FirstEventListener implements ApplicationListenerCustomEvent, Ordered {Overridepublic void listener1(CustomEvent event) {System.out.println(我第一个听到我第一个执行: event.getMessage());}Overridepublic int getOrder() {return 1; // 低值优先执行}
}public class SecondEventListener implements ApplicationListenerCustomEvent, Ordered {Overridepublic void listener2(CustomEvent event) {System.out.println(我第二个听到我第二个执行: event.getMessage());}Overridepublic int getOrder() {return 2; // 高值后执行}
}