SpringBoot中的定时任务,基于数据库动态执行

2022-09-11 09:08:59

普通无数据库版:

一、加入@EnableScheduling,开启定时任务(此注解也可以加在启动类上)。
@EnableScheduling@ComponentpublicclassOneDemo{
二、在需要执行定时任务的方法上加上 @Scheduled注解并设置定时规则
@Scheduled(fixedRate=100*2)//每两百毫秒秒执行一次,或使用cron  设置执行规则publicvoidhandleDelay(){System.out.println(newDate());}
	效果:

在这里插入图片描述

使用数据库:

一、创建数据库和表,没有什么命名限制,随便创建就行

在这里插入图片描述
二、实现SchedulingConfigurer 接口

@EnableScheduling@ComponentpublicclassOneDemoimplementsSchedulingConfigurer{
三、重写他的方法
@OverridepublicvoidconfigureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar){
        scheduledTaskRegistrar.addTriggerTask(//1.添加任务内容(Runnable)()->System.out.println("执行动态定时任务: "+LocalDateTime.now().toLocalTime()),//2.设置执行周期(Trigger)
                triggerContext->{//2.1 从数据库获取执行周期String cron= cronMapper.getCron();//2.3 返回执行周期(Date)returnnewCronTrigger(cron).nextExecutionTime(triggerContext);});}
效果和我们设置的  每十秒执行一次 一样

在这里插入图片描述

而且他是根据数据库存储的定时规则 实时更改的。

比如我将数据库设置为 每一秒一次。

在这里插入图片描述

在没有重启项目的情况下,他就变成一秒一次了

在这里插入图片描述
这里执行策略有很多,比如一天一次,或者周一或者周几 执行都行,只要你能想到的都能实现,只用
修改数据库里的 cron字段即可,但具体cron表达式改怎么写这里就不着重说明。

	点赞干嘛,愣着啊。
  • 作者:吃头牛
  • 原文链接:https://blog.csdn.net/weixin_48773329/article/details/120910775
    更新时间:2022-09-11 09:08:59