- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我关注了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/
我正在按照此示例在示例项目中创建计划任务:https://spring.io/guides/gs/scheduling-tasks 它说,@EnableScheduling ensures that
有没有办法根据应用程序属性使@EnableScheduling 成为条件?也可以根据属性禁用 Controller 吗? 我想要实现的是让相同的 spring boot 应用程序用于处理 Web 请求
当我运行单元测试时,它会调用我的计划任务。我想防止这种行为,这是由于我的主应用配置中有 @EnableScheduling 造成的。 如何在我的单元测试中禁用它? 我遇到过这个question/ans
我创建了一个类,其中的方法应每 5 秒运行一次。它们看起来像这样: @Configuration @EnableScheduling public class MyClass { @Sched
我想在 Spring 测试中禁用 @Schedule,但我找不到办法。 我尝试为测试环境创建不同的配置类,但任务仍然被触发。这是配置: @Configuration @EnableTransactio
我一直在研究如何使用 Java 8 和 spring 在运行时更改作业的频率。 This question非常有用,但并没有完全解决我的问题。 我现在可以配置下一次执行作业的日期。但是如果将延迟设置为
我关注了very simple examples在线在 Spring 中设置 cron 作业,但我每次都在 Tomcat 启动日志中收到此错误: 2015-05-25 00:32:58 DEBUG S
因为“只有返回无效的方法可以用@Scheduled注释”,当我使用@Bean配置时如何使用Spring Batch和Spring Scheduler Task的xml配置?您可以在下面找到我的完整配置
我在小枝应用程序中工作 其中有一个类scheduledJob,具有以下注释 @Configuration @EnableScheduling @Component public class Sched
我是一名优秀的程序员,十分优秀!