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

普通无数据库版:

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

在这里插入图片描述

使用数据库:

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

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

@EnableScheduling
@Component
public class OneDemo implements SchedulingConfigurer {
三、重写他的方法

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

	点赞干嘛,愣着啊。
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
SpringBoot,可以使用定时任务定时更新数据库。首先,你需要创建一个定时任务线程池,可以通过创建一个配置类来实现。在这个配置类,你可以设置线程池的大小、线程名称前缀等参数。\[3\] 接下来,你需要创建一个定时任务的服务类,可以通过实现接口SchedulingConfigurer来实现。在这个服务类,你可以定义定时任务执行逻辑。你可以从数据库读取指定时间来动态执行定时任务。\[1\] 然后,在项目启动时,你可以通过实现ApplicationRunner接口,在run方法初始化定时任务。你可以注入定时任务的服务类,并调用初始化方法来启动定时任务。\[2\] 这样,当项目启动时,定时任务就会被初始化,并按照设定的时间周期执行更新数据库的操作。 #### 引用[.reference_title] - *1* [springboot定时任务结合数据库](https://blog.csdn.net/weixin_47063459/article/details/120992304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [基于springboot定时任务的后台管理,使用数据库配置定时任务相关信息,修改,关闭定时任务不需重启项目](https://blog.csdn.net/yaoyipeng/article/details/129482305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值