1 提示错误expected single matching bean but found 2: applicationTaskExecutor,taskScheduler
在使用@Async
和@EnableAsync
时,Springboot启动后会提示如下的DEBUG日志,虽然不影响运行,但是很恶心。
expected single matching bean but found 2: applicationTaskExecutor,taskScheduler
这是因为没有指定异步使用的线程池导致的。在Application类的同级目录下,新建AsyncConfig
即可解决问题
@Configuration
@Slf4j
public class AsyncConfig implements AsyncConfigurer {
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(10);
executor.initialize();
return executor;
}
@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return new MyAsyncUncaughtExceptionHandler();
}
static class MyAsyncUncaughtExceptionHandler implements AsyncUncaughtExceptionHandler {
@Override
public void handleUncaughtException(Throwable ex, Method method, Object... params) {
log.error("class#method: " + method.getDeclaringClass().getName() + "#" + method.getName());
log.error("type : " + ex.getClass().getName());
log.error("exception : " + ex.getMessage());
}
}
}
网友评论