ApplicationEventPublisher-Spring事件发布器

一、简介

ApplicationEventPublisher是简称为Spring中的事件发布器,应用于Java事件型驱动应用是解耦和设计,Spring对Java已有的事件处理模型,做了进一步的简化处理。

二、发布及处理事件

ApplicationEventPublisher是一个函数式编程的接口,里面有两个方法主要用来发布事件;后续消费事件即可通过@EventListener注解进行消费即可。
发布者会调用 ApplicationEventPublisher的publishEvent 方法对某一事件进行发布。随后Spring容器会把该事件告诉所有的监听者,监听者根据拿到的“信息、某些指令或者某些数据”去做一些业务上的操作。

2.1 发布事件

通过ApplicationEventPublisher 的publishEvent进行事件的发布

   @Autowired
   private ApplicationEventPublisher publisher;
   
   private void publishDTO(JSONObject data) {
        Cs001DTO dto= JSONObject.toJavaObject(data, Cs001DTO.class);
        //发布事件
        publisher.publishEvent(dto);
    }
2.2 提取工具类
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class EventUtil {
 
    /**
     * 应用事件发布
     */
    public static ApplicationEventPublisher publisher;
 
    @Autowired
    public void setPublisher(ApplicationEventPublisher publisher) {
        EventUtil.publisher = publisher;
    }
 
    /**
     * 同步推送
     *
     * @param event 触发事件
     */
    public static void pushSynEvent(Object event) {
        try {
            log.debug("同步发布事件 Class:{}", event.getClass().getName());
            publisher.publishEvent(event);
        } catch (Exception e) {
            log.error("同步发布事件错误!==> {}", JsonUtil.toJSONString(event), e);
        }
    }
}

三、总结

本篇简单介绍Spring的时间发布器ApplicationEventPublisher的使用。

你可能感兴趣的:(Java,Spring,Boot,spring,java,springboot)