我正在尝试使用Web和@Async
任务。
所以我创建了两个配置类:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig {
}
@Configuration
@EnableAsync
public class AsyncConfiguration {
}
我还有一个注入AsyncTaskExecutor
的服务
@Service
public class MyService {
@Autowired
private AsyncTaskExecutor asyncTaskExecutor;
}
在此之后,我的应用程序无法启动,并报告以下错误:
***************************
APPLICATION FAILED TO START
***************************
Description:
Field asyncTaskExecutor in mypackage.MyService required a bean of type 'org.springframework.core.task.AsyncTaskExecutor' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
The following candidates were found but could not be injected:
- Bean method 'applicationTaskExecutor' in 'TaskExecutionAutoConfiguration' not loaded because @ConditionalOnMissingBean (types: java.util.concurrent.Executor; SearchStrategy: all) found beans of type 'java.util.concurrent.Executor' clientInboundChannelExecutor, clientOutboundChannelExecutor, brokerChannelExecutor
- Bean method 'taskScheduler' in 'TaskSchedulingAutoConfiguration' not loaded because @ConditionalOnBean (names: org.springframework.context.annotation.internalScheduledAnnotationProcessor; SearchStrategy: all) did not find any beans named org.springframework.context.annotation.internalScheduledAnnotationProcessor
Action:
Consider revisiting the entries above or defining a bean of type 'org.springframework.core.task.AsyncTaskExecutor' in your configuration.
我该如何解决这个问题呢?
发布于 2020-07-09 01:49:32
适用于我的变通方法:
import java.util.concurrent.Executor;
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.AsyncTaskExecutor;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@Configuration
@EnableAsync
public class AsyncConfiguration implements AsyncConfigurer {
@Bean
public AsyncTaskExecutor asyncTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(1);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(11);
executor.setThreadNamePrefix("AsyncExecutor-");
executor.initialize();
return executor;
}
@Override
public Executor getAsyncExecutor() {
return asyncTaskExecutor();
}
@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return new SimpleAsyncUncaughtExceptionHandler();
}
}
https://stackoverflow.com/questions/62800313
复制相似问题