首页 > 其他分享 >spring的schedule定时任务

spring的schedule定时任务

时间:2024-10-29 13:31:10浏览次数:6  
标签:10 触发 15 14 每天 schedule spring 定时 执行

日常中,如果定时任务比较多,可以采用xxl-job这样第三方工具,当然,如果只有一两个,可以使用spring的schedule,方便好用,接下去就让我们去了解下

一、使用;

二、关于注解中一些属性的使用;

实现本质是基于 java 中的 ScheduledExecutorService 类的 schedule 方法。

OK,接下去就进入主题;

一、使用

1、在springboot工程的启动类上添加注解@EnableScheduling

@SpringBootApplication
@EnableScheduling   //这个
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
        // 第一次拉取代码
    }

}

2、建立一个设置定时任务的类,在类上记得添加注解@Component,注入到spring容器中,让其管理,代码如下

@Component
public class ScheduledDemo {

    @Scheduled(cron = "10,30,50 * * * * *")
    public void test1(){
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        System.out.println("定时任务执行"  + ":" + formatter.format(now));
    }


}

3、在执行的方法上添加@Scheduled注解,基本就完成了整合使用。

从控制台输出就可以看到执行效果

 

二、@Scheduled注解

该注解有以下属性:

1、corn:corn表达式

从左到右用空格隔开分别是:【秒 分 时 日 月 周 年(可省略)】

第一个位置:Seconds 秒:区间 0-59 秒,代表一分钟内的秒数。

第二个位置:Minutes 分:区间 0-59 分,代表一小时内的分钟数。

第三个位置:Hours 时:区间 0-23 时,代表一天中的小时数。

第四个位置:Day of month 日:区间 1-31 (?根据每月有多少天来),代表一月中的多少号。

第五个位置:Month 月:区间 1-12 ,代表一年中的月份。

第六个位置:Day of week 周:区间 1-7或者英文星期的缩写,代表星期几。

(注意:1 对应周日 SUN , 7 对应周六 SAT ,如此循环)
 第七个位置:Year 年:区间1970-2099,代表具体年份,但是一般不用,可以直接不写。

常用示例:
0/5 * * * * ? 每隔5秒执行一次
0 */1 * * * ? 每隔1分钟执行一次
0 0 23 * * ? 每天23点执行一次
0 0 1 * * ? 每天凌晨1点执行一次
0 0 1 1 * ? 每月1号凌晨1点执行一次
0 0 23 L * ? 每月最后一天23点执行一次
0 0 1 ? * L 每周星期天凌晨1点实行一次
0 26,29,33 * * * ? 在26分、29分、33分执行一次
0 0 0,13,18,21 * * ? 每天的0点、13点、18点、21点都执行一次
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点
“0 0 12 * * ?” 每天中午12点触发
“0 15 10 ? * *” 每天上午10:15触发
“0 15 10 * * ?” 每天上午10:15触发
“0 15 10 * * ? *” 每天上午10:15触发
“0 15 10 * * ? 2005” 2005年的每天上午10:15触发
“0 * 14 * * ?” 在每天下午2点到下午2:59期间的每1分钟触发
“0 0/5 14 * * ?” 在每天下午2点到下午2:55期间的每5分钟触发
“0 0/5 14,18 * * ?” 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
“0 0-5 14 * * ?” 在每天下午2点到下午2:05期间的每1分钟触发
“0 10,44 14 ? 3 WED” 每年三月的星期三的下午2:10和2:44触发
“0 15 10 ? * MON-FRI” 周一至周五的上午10:15触发
“0 15 10 15 * ?” 每月15日上午10:15触发
“0 15 10 L * ?” 每月最后一日的上午10:15触发
“0 15 10 ? * 6L” 每月的最后一个星期五上午10:15触发
“0 15 10 ? * 6L 2002-2005” 2002年至2005年的每月的最后一个星期五上午10:15触发
“0 15 10 ? * 6#3” 每月的第三个星期五上午10:15触发
"0 0 12 * * ? " 每天12点运行
“0 15 10 * * ?” 每天10:15运行
“0 15 10 * * ? 2011” 2011年的每天10:15运行
“0 * 14 * * ?” 每天14点到15点之间每分钟运行一次,开始于14:00,结束于14:59。
“0 0/5 14 * * ?” 每天14点到15点每5分钟运行一次,开始于14:00,结束于14:55。
“0 0/5 14,18 * * ?” 每天14点到15点每5分钟运行一次,此外每天18点到19点每5钟也运行一次。
“0 0-5 14 * * ?” 每天14:00点到14:05,每分钟运行一次。
“0 10,44 14 ? 3 WED” 3月每周三的14:10分到14:44,每分钟运行一次。
“0 15 10 ? * MON-FRI” 每周一,二,三,四,五的10:15分运行。
“0 15 10 15 * ?” 每月15日10:15分运行。
“0 15 10 L * ?” 每月最后一天10:15分运行。
“0 15 10 ? * 6L” 每月最后一个星期五10:15分运行。
“0 15 10 ? * 6L 2007-2009” 在2007,2008,2009年每个月的最后一个星期五的10:15分运行。
“0 15 10 ? * 6#3” 每月第三个星期五的10:15分运行
 

2、 zone:时区,接收一个java.util.TimeZone#ID。cron表达式会基于该时区解析。默认是一个空字符串,即取服务器所在地的时区。比如我们一般使用的时区Asia/Shanghai。该字段我们一般留空。

3、 fixedDelay:上一次执行完毕时间点之后多长时间再执行。如:fixedDelay = 5000 表示上一次执行完毕时间点之后5秒再执行

4、fixedDelayString与 3. fixedDelay 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。如:

@Scheduled(fixedDelayString = "5000") //上一次执行完毕时间点之后5秒再执行
占位符的使用(配置文件中有配置:time.fixedDelay=5000):

@Scheduled(fixedDelayString = "${time.fixedDelay}")
public void testFixedDelayString() {
System.out.println("Execute at " + System.currentTimeMillis());
}

5、fixedRate:上一次开始执行时间点之后多长时间再执行。如:fixedRate = 5000 //上一次开始执行时间点之后5秒再执行

6、fixedRateString 与 5. fixedRate 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。

7、initialDelay 第一次延迟多长时间后再执行。如:

@Scheduled(initialDelay=1000, fixedRate=5000) //第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
8、initialDelayString 与 8. initialDelayString 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。
 

以上内容输出学习使用,仅供参考!

 

标签:10,触发,15,14,每天,schedule,spring,定时,执行
From: https://www.cnblogs.com/qwg-/p/18512883

相关文章

  • 扶贫工作数字化:SpringBoot精准扶贫系统
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • SpringBoot精准扶贫:农村发展新动力
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • Springboot体育课程在线预约平台rzk72(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,场地信息,场地类型,体育课程,预约订单开题报告内容一、研究背景与意义随着互联网技术的飞速发展,线上教育和课程培训已成为人们获取知识和提升技能的重要途......
  • Springboot特困生在线申报和信息服务系统57is6(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表教师,贫困生,助学金申请,扶贫项目,扶贫项目申请,助学贷款,贷款申请,助学金开题报告内容一、研究背景及意义随着社会的发展和教育的普及,特困生群体在我国逐渐增......
  • Springboot唐韵古都长安纪念品网站z037y(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,商品信息,商品分类开题报告内容一、选题背景长安,作为中国古代的首都,承载着悠久的历史和丰富的文化遗产。随着旅游业的蓬勃发展和人们对历史文化的热爱,越来......
  • Springboot题库管理信息系统n3052(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表教师,学生,课程信息,学习资料开题报告内容一、项目背景随着信息技术的飞速发展,学校和教育机构需要更加高效、便捷的管理方式来处理大量的题库信息。传统的题库......
  • 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现七
    一、前言介绍:1.1项目摘要随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势。古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力。然而,在现代社会中,由于生活节奏的加快和信息获取方式的多样化,古诗词的传播和阅读面临着一......
  • 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现八
    一、前言介绍:1.1项目摘要随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势。古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力。然而,在现代社会中,由于生活节奏的加快和信息获取方式的多样化,古诗词的传播和阅读面临着一......
  • SpringBoot驱动的精准扶贫解决方案
    1系统概述1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理精准扶贫管理系统的相关信息成为必然。开发合适的精准扶贫管理系统,可以方便管理人员对精准......
  • 高效扶贫:SpringBoot精准扶贫系统
    1系统概述1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理精准扶贫管理系统的相关信息成为必然。开发合适的精准扶贫管理系统,可以方便管理人员对精准......