Код: Выделить всё
@Slf4j
@Configuration
@EnableAsync
public class AsyncConfig implements AsyncConfigurer {
private static final int MAX_POOL_SIZE = 50;
private static final int CORE_POOL_SIZE = 20;
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setBeanName("taskExecutor");
taskExecutor.setMaxPoolSize(MAX_POOL_SIZE);
taskExecutor.setCorePoolSize(CORE_POOL_SIZE);
taskExecutor.setThreadNamePrefix("async-task-thread-pool");
taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
taskExecutor.setAwaitTerminationSeconds(60 * 10);
taskExecutor.setRejectedExecutionHandler(
(r, executor) -> log.warn("current thread pool is full, reject to invoke."));
taskExecutor.initialize();
return taskExecutor;
}
@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return (ex, method, params) ->
{
log.error("invoke async method occurs error. method: {}, params: {}",
method.getName(), JSON.toJSONString(params), ex);
throw new RuntimeException();
};
}
}
< /code>
И я добавляю аннотацию @async в другой метод класса. < /p>
@Override
public Future getResult(String name);
< /code>
Но когда я называю метод getResult () < /code>, он сообщается о том, что не будет компонент с именем с именем «taskexecutor»: без соответствующего исполнителя Bean Bean, найденный для квалификатора 'taskexecutor' - ни матч, ни матч, а затем и нахожу это! Страница: https: //www.baeldung.com/spring-async. Я следую над руководством этой страницы - удалить аннотацию @enableasync Если вы хотите полностью управляемый боб. В таких обстоятельствах больше не необходимо, чтобы
вручную вызовут метод {@code executor.initialize ()}, так как это будет вызвать
автоматически, когда инициализируется фасоль. Какая часть бобов не управляется весной?
Подробнее здесь: https://stackoverflow.com/questions/541 ... pring-boot