网络营销型网站,律师做推广的网站,有谁可以做网站寄生虫,百度做直播和短视频网站应用场景#xff1a;
在开发中#xff0c;有时需要监听某些事件#xff0c;在事件触发时#xff0c;执行相应的逻辑。
也可以说是基于事件驱动的观察者模式。
比如当点击某个按钮时#xff0c;触发相应的功能#xff0c;或者用户下单通知等等。
SpringBoot 可以通过 …应用场景
在开发中有时需要监听某些事件在事件触发时执行相应的逻辑。
也可以说是基于事件驱动的观察者模式。
比如当点击某个按钮时触发相应的功能或者用户下单通知等等。
SpringBoot 可以通过 ApplicationEvent 、ApplicationEventPublisher、EventListener 实现事件的发布订阅。
Event事件
继承 ApplicationEvent定义 Event事件。
构造方法需要加入一个父类的参数 source表示事件的来源。source 参数传入事件来源事件发生的对象比如this。
public class MyEvent extends ApplicationEvent {private String name;private String orderId;public MyEvent(Object source, String name, String orderId) {super(source);this.name name;this.orderId orderId;}//自行添加 getter()、setter()等方法。此处忽略
}订阅事件
通过 EventListener 订阅事件对事件进行监听。
Async 注解进行异步处理。
Slf4j
Component
public class MyEventListener {AsyncEventListener(MyEvent.class)public void listener(MyEvent event) {log.info(listener event start);//执行事件对应的业务逻辑log.info(do something.);}
} 发布事件:
通过 ApplicationEventPublisher 发布事件。 发布事件后就会自动触发事件监听的逻辑。
Service
public class EventPublisherService {Resourceprivate ApplicationEventPublisher publisher;public void doSomething() {//其他业务逻辑//发布事件//使用时传入事件来源事件发生的对象比如thisMyEvent event new MyEvent(this, orderQueue, 12345);event.setName(orderQueue);publisher.publishEvent(event);}}