gpt4 book ai didi

java - 使用 @Scheduled 和 @EnableScheduling 但给出 NoSuchBeanDefinitionException

转载 作者:IT老高 更新时间:2023-10-28 20:32:34 25 4
gpt4 key购买 nike

我关注了very simple examples在线在 Spring 中设置 cron 作业,但我每次都在 Tomcat 启动日志中收到此错误:

2015-05-25 00:32:58 DEBUG ScheduledAnnotationBeanPostProcessor:191 - 
Could not find default TaskScheduler bean org.springframework.beans.factory.NoSuchBeanDefinitionException: No
qualifying bean of type [org.springframework.scheduling.TaskScheduler] is defined

2015-05-25 00:32:58 DEBUG ScheduledAnnotationBeanPostProcessor:202 - Could not
find default ScheduledExecutorService bean
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying
bean of type [org.springframework.scheduling.TaskScheduler] is defined

以及用于实现 cron 的 2 个 java 类:

  • @Configuration 类:

    @Configuration
    @EnableScheduling
    public class ClearTokenStoreCronEnable {
    final static Logger log =
    LoggerFactory.getLogger(ClearTokenStoreCronEnable.class);
    private @Autowired TokenStoreRepository tokenStoreRepository;
    }
  • 和 Cron 作业类:

    @Service
    public class ClearTokenStoreWorkerService {

    final static Logger log = LoggerFactory.getLogger(ClearTokenStoreWorkerService.class);
    private @Autowired TokenStoreRepository tokenStoreRepository;

    //@Scheduled(fixedDelay=5000)
    //run daily at midnight
    @Scheduled(cron = "0 0 * * * *")
    public void tokenStoreTable() {
    log.debug("tokenstore table truncated - start");
    tokenStoreRepository.deleteAll();
    log.debug("tokenstore table truncated - end");
    }
    }

附带说明,cron 作业在午夜运行,但它似乎在其他时间也随机运行。不确定这是错误还是我的 cron 表达式错误:@Scheduled(cron = "0 0 * * * *")

此时我主要关心的是为什么会出现 ScheduledAnnotationBeanPostProcessor 错误?它正在寻找一个 TaskScheduler 和 ScheduledExectorService。 我只需要每天触发一次。我没有做任何并发处理或我需要多个线程的地方。最终这些错误是否有害或者我需要修复它们吗?

最佳答案

根据异常信息找不到默认的TaskScheduler bean,配置应该定义TaskScheduler而不是“Executor”

@Configuration
public class AppContext extends WebMvcConfigurationSupport {
@Bean
public TaskScheduler taskScheduler() {
return new ConcurrentTaskScheduler();
}

// Of course , you can define the Executor too
@Bean
public Executor taskExecutor() {
return new SimpleAsyncTaskExecutor();
}
}

关于java - 使用 @Scheduled 和 @EnableScheduling 但给出 NoSuchBeanDefinitionException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30431776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com