Spring可执行定时任务的线程池ThreadPoolTaskScheduler报错:required a bean of type that could not be found.

Posted 夜中听雪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring可执行定时任务的线程池ThreadPoolTaskScheduler报错:required a bean of type that could not be found.相关的知识,希望对你有一定的参考价值。

完整报错

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-05-19 16:27:31,568 ERROR [restartedMain] o.s.b.d.LoggingFailureAnalysisReporter [LoggingFailureAnalysisReporter.java:40] 

***************************
APPLICATION FAILED TO START
***************************

Description:

Field taskScheduler in com.nowcoder.community.event.EventConsumer required a bean of type 'org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler' that could not be found.

The injection point has the following annotations:
	- @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler' in your configuration.

Disconnected from the target VM, address: '127.0.0.1:50354', transport: 'socket'

Process finished with exit code 1

解决方法

项目中加一个类。

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;

@Configuration
@EnableScheduling
//@EnableAsync		//使用@EnableAsync来开启异步的支持,使用@Async来对某个方法进行异步执行。
public class ThreadPoolConfig {
//不加这个配置类(配置类的名字无所谓)和@EnableScheduling注解,那么ThreadPoolTaskScheduler就无法注入(@Autowired),即无法初始化,无法得到一个ThreadPoolTaskScheduler的对象
}

以上是关于Spring可执行定时任务的线程池ThreadPoolTaskScheduler报错:required a bean of type that could not be found.的主要内容,如果未能解决你的问题,请参考以下文章

Spring注解定时任务,线程池问题

定时任务多线程的实现

设置 Spring Boot 的定时任务线程池以优雅退出

设置 Spring Boot 的定时任务线程池以优雅退出

设置 Spring Boot 的定时任务线程池以优雅退出

spring定时任务Scheduled与定时任务线程池配置SchedulingConfigurer ,Java