1、event定义
public class DemoEvent extends ApplicationEvent {
public DemoEvent(Object source) {
super(source);
}
}
2、发布event
@Autowired
ApplicationContext applicationContext;
@GetMapping("test")
public void test(){
applicationContext.publishEvent(new DemoEvent("1"));
}
3、监听event
@Component
public class ApplicationEventDemo implements ApplicationListener<DemoEvent> {
@Override
public void onApplicationEvent(DemoEvent demoEvent) {
Object source = demoEvent.getSource();
System.out.println(Thread.currentThread().getName()+"==="+source);
}
}
4、线程池方式配置listener
@Bean(name = "defaultThreadPoolExecutor", destroyMethod = "shutdown")
public ThreadPoolExecutor systemCheckPoolExecutorService() {
return new ThreadPoolExecutor(3, 10, 60, TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>(10000));
}
@Bean
public SimpleApplicationEventMulticaster applicationEventMulticaster(@Qualifier("defaultThreadPoolExecutor") ThreadPoolExecutor defaultThreadPoolExecutor) {
SimpleApplicationEventMulticaster simpleApplicationEventMulticaster = new SimpleApplicationEventMulticaster();
simpleApplicationEventMulticaster.setTaskExecutor(defaultThreadPoolExecutor);
return simpleApplicationEventMulticaster;
}