当前位置: 首页 > news >正文

Spring Task 调度任务

        Spring Task是调度任务框架,通过配置,程序可以按照约定的时间自动执行代码逻辑,基于注解方式实现需要如下注解:

  • @Component 任务调度类交给Spring IOC容器管理
  • @EnableScheduling 启用 Spring 的定时任务(Scheduling)功能
  • @Scheduled(cron="*/5 * * * * ?") 作用在方法上,方法按照约定的时间自动执行,通过CRON表达式配置约定时间

        cron表达式是一种用于设置定时任务的语法规则。它由6个字段组成,分别表示秒、分、时、日、月和星期几,每个字段可以设置为一个数字、一组数字(用逗号分隔)、一段数字范围(用短横线分隔)、通配符(表示任意值)或者特定的字符,示例如下:

  • "0 0 12 * * ?" 每天中午12点触发
  • "0 15 10 * * ?" 每天上午10:15触发
  • "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
  • "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
  • "0 15 10 15 * ?" 每月15日上午10:15触发

        程序示例如下:

定时任务类:ScheduleTaskTest,系统每隔5秒钟执行一次test方法

package com.text.task;import lombok.extern.java.Log;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;@Log
@Component
@EnableScheduling
public class ScheduleTaskTest {@Scheduled(cron="*/5 * * * * ?")public void test() {log.info("=======每隔5秒钟执行=======");}
}

测试类:

package com.text;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Application {public static void main(String[] args) throws Exception {ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");}
}

运行结果及结果分析:

        从运行结果可以看出,spring启动后,程序每隔5秒钟定时执行了test方法。

        注意:如果应用部署在集群环境,多个应用同时运行,会出现重复执行定时任务的情况,此种情况需要确保只有一个节点执行定时任务,项目上往往通过分布式锁来解决,集群中的每个节点都会尝试获取锁,只有获取锁的节点才能执行任务,其他节点则等待或跳过当前任务,具体实现方案后续再详细介绍。


http://www.mrgr.cn/news/39760.html

相关文章:

  • 【Leecode 随笔】C语言版看了不后悔系列持续更新中。。。
  • Excel表格还能这样玩?没有VBA和插件,一样可以用数据库功能
  • 什么是javascript的事件循环
  • WebRTC入门
  • 这几种文件找回方法你都知道吗?
  • vue3+typescript 如何将xml格式的文件转化成key value的形式?
  • scrapy 爬取微博(五)【最新超详细解析】: 爬取微博文章
  • 【2024.9.30练习】素数密度
  • 阿里云表格存储OtsQueryWrapper
  • Nginx部署前端Vue项目的深度解析
  • 学习高级深度学习的必备书——深度学习精粹
  • 银行家的舍入方法探讨20240930
  • [linux 驱动]input输入子系统详解与实战
  • python实用脚本(二):删除xml标签下的指定类别
  • 基于yolov8的100种蝴蝶智能识别系统python源码+pt模型+训练日志+精美GUI界面
  • 在PC端连接苹果手机(iPhone)时,即使已经开启了开发者模式(开发者权限),但仍然无法成功连接,是什么原因?
  • 特征工程——一门提高机器学习性能的艺术
  • 【LeetCode】动态规划—5. 最长回文子串(附完整Python/C++代码)
  • JDBC进阶
  • 【vs code(cursor) ssh连不上服务器(2)】但是 Terminal 可以连上,问题解决 ✅