返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot实现动态定时任务的示例代码
  • 830
分享到

SpringBoot实现动态定时任务的示例代码

SpringBoot动态定时任务SpringBoot定时任务 2022-11-13 18:11:09 830人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言配置文件定时任务核心类提供修改cron表达式的controller前言 之前在SpringBoot项目中简单使用定时任务,不过由于要借助cron表达式且都提前定义好放在配置文

前言

之前在SpringBoot项目中简单使用定时任务,不过由于要借助cron表达式且都提前定义好放在配置文件里,不能在项目运行中动态修改任务执行时间,实在不太灵活。现在我们就来实现可以动态修改cron表达式的定时任务。

配置文件

application-task.yml,其余的配置 application.yml 等就按照springBoot正常配置即可

task:
  cron: 0/10 * * * * ?
  timer: 10

定时任务核心类

import cn.hutool.core.date.DateUtil;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulinGConfigurer;
import org.springframework.scheduling.config.ScheduledTaskReGIStrar;
import org.springframework.scheduling.support.PeriodicTrigger;

import java.util.Date;


@Data
@Slf4j
@Configuration
@EnableScheduling
@ConfigurationProperties(prefix = "task")
public class WorkScheduleTask  implements SchedulingConfigurer {

    private String cron;

    private Long timer;


    @Override

    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        // 动态使用cron表达式设置循环间隔
        taskRegistrar.addTriggerTask(() -> {
            String dateTime = DateUtil.fORMatDateTime(new Date());
            String threadName = Thread.currentThread().getName();
            log.info("定时任务开始[configureTasks] :{},线程:{}", dateTime, threadName);
        }, triggerContext -> {
            // 使用CronTrigger触发器,可动态修改cron表达式来操作循环规则
            // 只能定义小于等于间隔59秒
//          CronTrigger cronTrigger = new CronTrigger(cron);
//          return cronTrigger.nextExecutionTime(triggerContext);

            // 能定义大于等于间隔59秒
            // 使用不同的触发器,为设置循环时间的关键,区别于CronTrigger触发器,
            // 该触发器可随意设置循环间隔时间,单位为毫秒
            long seconds = timer * 1000;  // 毫秒转秒
            PeriodicTrigger periodicTrigger = new PeriodicTrigger(seconds);
            return periodicTrigger.nextExecutionTime(triggerContext);
        });
    }
}

提供修改cron表达式的controller

@Slf4j
@CrossOrigin
@RestController
@RequestMapping("/updateTask")
public class UpdateTaskController {

    @Resource
    private WorkScheduleTask workScheduleTask;

    @PostMapping("/updateCron")
    public String updateCron(String cron) {
        log.info("new cron :{}", cron);
        workScheduleTask.setCron(cron);
        return "ok";
    }

    @PostMapping("/updateTimer")
    public String updateTimer(Long timer) {
        log.info("new timer :{}", timer);
        workScheduleTask.setTimer(timer);
        return "ok";
    }

}

一开始定时任务的执行时机和周期都是配置文件指定的,但是我们如果对于执行的周期不满意,我们可以调用接口进行修改定时任务,但是需要注意的是,这种外暴露的接最好做一下安全校验,不是谁都可以调用,否则被别人扫描到这个接口,然后随意修改,会影响我们正常的业务流程,严重可能会造成严重损失。

到此这篇关于SpringBoot实现动态定时任务的示例代码的文章就介绍到这了,更多相关SpringBoot动态定时任务内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot实现动态定时任务的示例代码

本文链接: https://lsjlt.com/news/170068.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringBoot实现动态定时任务的示例代码
    目录前言配置文件定时任务核心类提供修改cron表达式的controller前言 之前在SpringBoot项目中简单使用定时任务,不过由于要借助cron表达式且都提前定义好放在配置文...
    99+
    2022-11-13
    SpringBoot动态定时任务 SpringBoot 定时任务
  • SpringBoot Scheduling定时任务的示例代码
    目录开启定时任务注解@EnableScheduling@Scheduled添加定时任务Cron表达式在线cron工具适应场景springBoot提供了定时任务的支持,通过注解简单快捷...
    99+
    2024-04-02
  • SpringBoot+Quartz实现动态定时任务
    本文实例为大家分享了springBoot+Quartz实现动态定时任务的具体代码,供大家参考,具体内容如下 目前常用的几种任务调度 Timer,简单无门槛,一般也没人用。spring...
    99+
    2024-04-02
  • Java实现定时任务的示例代码
    目录xxl-job官网引入依赖配置信息(application.properties)配置类(XxlJobConfiguration)调用xxl-job-admin模块的接口添加调度...
    99+
    2022-11-21
    Java实现定时任务 Java定时任务 Java 定时
  • SpringBoot动态定时任务如何实现
    这篇文章主要介绍了SpringBoot动态定时任务如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot动态定时任务如何实现文章都会有所收获,下面我们一起来看看吧。 执行定时任务的...
    99+
    2023-07-05
  • SpringBoot动态定时任务实现完整版
    目录 执行定时任务的线程池配置类ScheduledFuture的包装类Runnable接口实现类定时任务注册类定时任务示例类数据库表设计实体类定时任务预热工具类定时任务的:...
    99+
    2023-02-23
    springboot动态定时任务 springboot 定时任务
  • SpringBoot 实现动态添加定时任务功能
    目录代码结构1. 配置类2. 定时任务类型枚举3. 实际执行任务实现类4. 定时任务包装器5. 任务注册器 (核心)6. 使用最后最近的需求有一个自动发布的功能, 需要做到每次提交都...
    99+
    2024-04-02
  • Springboot实现动态定时任务流程详解
    目录一、静态二、动态1、基本代码2、方案详解2.1 初始化2.2 单次执行2.3 停止任务2.4 启用任务三、小结一、静态 静态的定时任务可以直接使用注解@Scheduled,并在启...
    99+
    2024-04-02
  • SpringBoot定时任务多线程实现示例
    测试Spring Boot定时任务冲突时,使用的线程数量 引入依赖: Spring Boot 2.6.1 <dependency> <group...
    99+
    2024-04-02
  • SpringBoot实现固定、动态定时任务 | 三种实现方式
    前言: 阅读完本文:🐱‍👓 知晓 SpringBoot 用注解如何实现定时任务明白 SpringBoot 如何实现一个动态定时任务 (与数据库相关联实现)理解 SpringBoot 实现设置时间执行定时任务 ...
    99+
    2023-10-01
    spring boot java mybatis
  • 如何实现SpringBoot+Quartz+Maven+MySql动态定时任务
    下面一起来了解下如何实现SpringBoot+Quartz+Maven+MySql动态定时任务,相信大家看完肯定会受益匪浅,文字在精不在多,希望如何实现SpringBoot+Quartz+Maven+MyS...
    99+
    2024-04-02
  • SpringBoot实现动态多线程并发定时任务
    本文实例为大家分享了SpringBoot实现动态多线程并发定时任务的具体代码,供大家参考,具体内容如下 实现定时任务有多种方式,使用spring自带的,继承SchedulingCon...
    99+
    2024-04-02
  • SpringBoot如何实现定时任务示例详解
    目录写在前面一、基于注解(@Scheduled)二、数据库动态配置1、表数据添加,资源配置1.1 添加表1.2 插入两条数据,job_key根据是完整的类名1.3 引入依赖1.4 配...
    99+
    2024-04-02
  • SpringBoot动态定时任务(完整版)
    本文定时任务功能(增、删、改、启动、暂停) 话不多说,直接上代码,你们直接CV就可以用!!!  执行定时任务的线程池配置类 import org.springframework.context.annotation.Bean;im...
    99+
    2023-08-30
    spring boot java spring
  • springboot项目使用SchedulingConfigurer实现多个定时任务的案例代码
    目录一、引入依赖二、配置文件属性配置三、代码目录结构四、示例代码4.1、定义 定时任务基础接口4.2、定义 定时任务一(每天几点几分执行)4.3、定义 定时任务二(每几分钟执行一次)...
    99+
    2023-01-05
    springboot多个定时任务 springboot使用SchedulingConfigurer
  • SpringBoot如何设置动态定时任务
    这篇文章主要介绍了SpringBoot如何设置动态定时任务的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot如何设置动态定时任务文章都会有所收获,下面我们一起来看看吧。之前写过文章记录怎么在Sp...
    99+
    2023-07-02
  • 怎么用SpringBoot实现动态添加定时任务功能
    这篇“怎么用SpringBoot实现动态添加定时任务功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用SpringBo...
    99+
    2023-06-29
  • Django+Celery实现定时任务的示例
    目录一、前言二、配置使用定义与触发任务扩展三、Django中使用定时任务二次开发一、前言   Celery是一个基于python开发的分布式任务队列,而做python WEB开发最为...
    99+
    2024-04-02
  • celery实现动态设置定时任务
    本文实例为大家分享了celery动态设置定时任务的具体代码,供大家参考,具体内容如下 首先celery是一种异步任务队列,如果还不熟悉这个开源软件的请先看看官方文档,快速入门。 这里...
    99+
    2024-04-02
  • SpringBoot开发实战系列之动态定时任务
    目录前言代码编写效果演示  启动修改停止后记前言 定时器是我们项目中经常会用到的,SpringBoot使用@Scheduled注解可以快速启用一个简单的定时器(详情请看我们之前的博客...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作