异步 ApllicationContext pushlishEvent @EventLisener来处理
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.event.ApplicationEventMulticaster;
import org.springframework.core.task.AsyncTaskExecutor;
@Component
public class MyEventPublisher {
private final ApplicationContext applicationContext;
private final ApplicationEventMulticaster eventMulticaster;
private final AsyncTaskExecutor taskExecutor;
public MyEventPublisher(ApplicationContext applicationContext, ApplicationEventMulticaster eventMulticaster, AsyncTaskExecutor taskExecutor) {
this.applicationContext = applicationContext;
this.eventMulticaster = eventMulticaster;
this.taskExecutor = taskExecutor;
}
public void publishEventAsync(ApplicationEvent event) { taskExecutor.execute(() -> eventMulticaster.multicastEvent(event)); }
}
MyEventPublisher.publishEventAsync(AA)
处理类
@Component
public class Hanlder{
@EventListener(AA.class)
public void handle(AA aa){
}
}

浙公网安备 33010602011771号