异步 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){

}

}

 

posted @ 2024-01-29 16:16  清明雨下  阅读(26)  评论(1)    收藏  举报