SpringBoot(十四)_springboot使用内置定时任务的使用

阅读目录 为什么使用定时? 实战演示 corn 语法说明 fixedRate 说明 总结 回到顶部 为什么使用定时? 日常工作中,经常会用到定时任务,比如各种统计,并不要求实时性。此时可以通过提前设置定时任务先把数据跑出来,后续处理起来更方便. 本篇文章主要介绍 springboot内置定时任务。 回到顶部 实战演示 1、pom文件 pom 包里面只需要引入 Spring Boot Starter 包即可,Spring Boot Starter 包中已经内置了定时的方法。我这里方便演示,增加了lombok org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test org.projectlombok lombok 1.16.20 provided 2、启动类开启定时 @SpringBootApplication @EnableScheduling public class ScheduledApplication { public static void main(String[] args) { SpringApplication.run(ScheduledApplication.class, args); } } 3、创建定时任务实现类 这里并没有直接在类中写cron语句,而是写到了配置文件中。一般实际项目中这样写。 3.1、ScheduledTask 类 /** * @author: curry * @Date: 2018/10/10 */ @Component @Slf4j public class ScheduledTask { @Scheduled(cron = "${job.schedule}") private void process1() { log.info("start"); } } 3.2 application.properties job.schedule = */5 * * * * ? 4、执行结果 2018-10-10 22:48:55.001 [pool-1-thread-1] demo.ScheduledTask : start 2018-10-10 22:49:00.001 [pool-1-thread-1] demo.ScheduledTask : start 2018-10-10 22:49:05.001 [pool-1-thread-1] demo.ScheduledTask : start 2018-10-10 22:49:10.001 [pool-1-thread-1] demo.ScheduledTask : start 2018-10-10 22:49:15.001 [pool-1-thread-1] demo.ScheduledTask : start 回到顶部 corn 语法说明 cron 每位的含义 cron 一共有 7 位,最后一位是年,Spring Boot 定时方案中只需要设置 6 位即可: - 第一位,表示秒,取值 0-59; - 第二位,表示分,取值 0-59; - 第三位,表示小时,取值 0-23; - 第四位,日期天/日,取值 1-31; - 第五位,日期月份,取值 1-12; - 第六位,星期,取值 1-7,星期一、星期二…; 注:不是第1周、第2周的意思,另外:1表示星期天,2表示星期一。 - 第七位,年份,可以留空,取值 1970-2099。 cron 符号含义 (*)星号:可以理解为每的意思,每秒、每分、每天、每月、每年……。 (?)问号:问号只能出现在日期和星期这两个位置,表示这个位置的值不确定,每天 12 点执行,所以第六位星期的位置是不需要关注的,就是不确定的值。同时,日期和星期是两个相互排斥的元素,通过问号来表明不指定值。 (-)减号:表达一个范围,如在小时字段中使用“10-12”,则表示从 10~12 点,即 10、11、12。 (,)逗号:表达一个列表值,如在星期字段中使用“1、2、4”,则表示星期一、星期二、星期四。 (/)斜杠:如 x/y,x 是开始值,y 是步长,比如在第一位(秒) 0/15 就是,从 0 秒开始,每 15 秒,最后就是 0、15、30、45、60,另 */y,等同于 0/y。 举个栗子 0 0 1 * * ? 每天 1 点执行。 0 5 1 * * ? 每天 1 点 5 分执行。 0-5 * * * * ? 每分钟的0/1/2/3/4/5 秒执行 0 5/10 1 * * ? 每天 1 点的 5 分、15 分、25 分、35 分、45 分、55 分这几个时间点执行。 0 5 1 ? * 1 每周星期天,1点5分 执行,注:1 表示星期天。 0 10 3 ? * 1#3 每个月的第 三 个星期,星期天执行,# 号只能出现在星期的位置。 回到顶部 fixedRate 说明 这个日常工作中很少用到,这里不做详细介绍 @Scheduled(fixedRate = 6000) :上一次开始执行时间点之后 6 秒再执行。 @Scheduled(fixedDelay = 6000) :上一次执行完毕时间点之后 6 秒再执行。 @Scheduled(initialDelay=1000, fixedRate=6000) :第一次延迟 1 秒后执行,之后按 fixedRate 的规则每 6 秒执行一次。 回到顶部 总结 其实,使用内置的定时任务还是很方便的,但是,如果复杂的情况一般使用Quartz 。大家工作中一般都会见过这个东西。下篇文章一块学习一下这个东西。 作者:养码青年 出处:http://www.cnblogs.com/zhenghengbin/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。https://www.cnblogs.com/zhenghengbin/p/9769886.html
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信