001package run.iget.framework.event; 002 003import org.springframework.context.ApplicationEventPublisher; 004import org.springframework.context.ApplicationEventPublisherAware; 005import org.springframework.stereotype.Component; 006 007import com.alibaba.fastjson.JSON; 008 009import lombok.extern.slf4j.Slf4j; 010 011@Slf4j 012@Component 013public class EventPublishUtils implements ApplicationEventPublisherAware { 014 015 private static ApplicationEventPublisher APPLICATION_EVENT_PUBLISHER = null; 016 017 @Override 018 public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { 019 APPLICATION_EVENT_PUBLISHER = applicationEventPublisher; 020 } 021 022 /** 023 * 发送事件 024 * @param event 025 */ 026 public static void publish(AppEvent event) { 027 if (log.isDebugEnabled()) { 028 log.debug("发布事件消息:{}", JSON.toJSONString(event)); 029 } 030 APPLICATION_EVENT_PUBLISHER.publishEvent(event); 031 } 032 033 /** 034 * 发送事件 035 * @param source 事件消息对象 036 */ 037 public static void publish(Object source) { 038 AppEvent appEvent = null; 039 if (source instanceof AppEvent) { 040 appEvent = (AppEvent) source; 041 } else { 042 appEvent = AppEvent.of(source); 043 } 044 publish(appEvent); 045 } 046 047}