启动类添加@EnableAsync异步注解。
1.创建事件event并集成ApplicationEvent 。
/**
* 事件
*
* @Author EDZ
* @Date 2022/7/19
*/
public class xxxxEvent extends ApplicationEvent {
/**
* Create a new {@code ApplicationEvent}.
*
* @param source the object on which the event initially occurred or with
* which the event is associated (never {@code null})
*/
public xxxxEvent (Object source) {
super(source);
}
}
2.创建事件entity。
/**
事件需要的参数
* @author sc
* @date 2022/7/19 10:36 AM
*/
@Data
@Builder
public class xxxEventEntity {
/**
* 名称
*/
String name;
/**
* 对象
*/
Object obj;
}
3.创建事件监听
/**
* 异步监听事件
*
* @author daivd
* @date 2022-07-19 16:51
*/
@Slf4j
@Component
public class xxxxEventListener {
@Async
@Order
@EventListener({ xxxxAddEvent.class,xxxUpdateEvent.class})
public void application(Object event) {
xxxEventEntity xxxEventEntityObj = null;
if(event instanceof xxxxAddEvent){
xxxxAddEvent addEventObj = (xxxxAddEvent) event;
xxxEventEntityObj = (xxxEventEntity) addEventObj .getSource();
}else if(event instanceof xxxUpdateEvent){
xxxUpdateEvent updateEventObj = (xxxUpdateEvent) event;
xxxEventEntityObj = (xxxEventEntity) updateEventObj.getSource();
}
// todo 逻辑处理
}
事件触发
SpringUtil.getApplicationContext().publishEvent(new xxxxEvent (xxxEventEntity .builder().name("张三").build()));