Spring Boot - любые ярлыки для установки TaskExecutor?

Просто захотелось зарегистрироваться, чтобы узнать, есть ли у кого-нибудь более быстрый способ установить TaskExecutor для Spring MVC в загрузке Spring (с использованием автоматической настройки). Это то, что у меня есть до сих пор:

@Bean
protected ThreadPoolTaskExecutor mvcTaskExecutor() {
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setThreadNamePrefix("my-mvc-task-executor-");
    executor.setCorePoolSize(5);
    executor.setMaxPoolSize(200);
    return executor;
}

@Bean
protected WebMvcConfigurer webMvcConfigurer() {
    return new WebMvcConfigurerAdapter() {
        @Override
        public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
            configurer.setTaskExecutor(mvcTaskExecutor());
        }
    };
}

У кого-нибудь есть лучший/быстрый способ сделать это?

Джошуа

Ответ 1

Один из способов достижения этого - использовать класс Spring ConcurrentTaskExceptor. Этот класс действует как адаптер между Spring TaskExecutor и JDK Executor.

@Bean
protected WebMvcConfigurer webMvcConfigurer() {
    return new WebMvcConfigurerAdapter() {
        @Override
        public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
            configurer.setTaskExecutor(new ConcurrentTaskExecutor(Executors.newFixedThreadPool(5)));
        }
    };
}

Одна из проблем, описанных выше, заключается в том, что вы не можете указать максимальный размер пула. Но вы всегда можете создать новый метод factory, createThreadPool(int core, int max), чтобы получить настраиваемые пулы потоков.