Java 如何使用AsyncConfigurer定义多个限定线程池

Java 如何使用AsyncConfigurer定义多个限定线程池,java,spring,asynchronous,Java,Spring,Asynchronous,Spring framework有一个接口AsyncConfigurer(和AsyncConfigurerSupport),用于配置拥有线程池执行器以及能够异步运行方法(使用@Async)所需的一切 但通常情况下,在不同的功能之间共享同一个线程池不是一个好的做法,所以我通常用一个名称限定它们,并在异步注释中指定该名称,以便它使用一个特定的线程池 问题是,我想通过这个方便的接口AsyncConfigurer来配置它们,但我不能这样做 试一试: @Configuration @Ena

Spring framework有一个接口AsyncConfigurer(和AsyncConfigurerSupport),用于配置拥有线程池执行器以及能够异步运行方法(使用@Async)所需的一切

但通常情况下,在不同的功能之间共享同一个线程池不是一个好的做法,所以我通常用一个名称限定它们,并在异步注释中指定该名称,以便它使用一个特定的线程池

问题是,我想通过这个方便的接口AsyncConfigurer来配置它们,但我不能这样做

试一试:

    @Configuration
    @EnableAsync
    public class PusherAsyncConfigurerSupport extends AsyncConfigurerSupport {
        @Autowired
        ExecutorConfig config;
        @Override
        @Qualifier(value = "executorOne")
        public Executor getAsyncExecutor() {
            ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
            executor.setCorePoolSize(config.getCorePoolSize());
            ...
            executor.initialize();
            return executor;
        }

        @Override
        public AsyncUncaughtExceptionHandler     getAsyncUncaughtExceptionHandler() {
            return new MyAsyncUncaughtExceptionHandler();
        }
    }
当放入异步注释时,仍然无法识别该线程池


那么,以这种方式配置多个线程池需要什么呢?或者这根本不是解决问题的方法吗?

用@Bean注释标记

@Bean
@Qualifier(value = "executorOne")
public Executor getAsyncExecutor() {
//..
  return executor;
}

你怎么知道泳池没有被重新注册?@kuhajeyan,它抛出了一个例外,说没有一个执行人有这个名字。太简单了,它成功了!(但是有了
@Bean(name=“executorOne”)
,我对springmagic的期望更高。