【spring boot】spring boot中使用定时任务配置

时间:2022-02-10 06:21:50

spring boot中使用定时任务配置

==================================================================================================================================

首先得创建一个spring boot项目吧,使用idea创建spring boot项目 本博客有教程

【本文完整代码 可参见 GItHub

==================================================================================================================================

使用步骤如下

【千万注意:一定要在启动类添加注解,否则定时任务无效】

1.在启动类 添加  开启定时任务 注解@EnableScheduling

【spring boot】spring boot中使用定时任务配置

2.创建定时任务类,使用注解@Component 标注定时任务类,作用是注入为Bean

         使用注解@Scheduled 标注在定时任务方法上, 作用是标注这个方法是执行定时任务的业务逻辑

关于@Scheduled的使用方法,参见后面备注1

@Component
public class AutoUpdateDateSchedule { @Autowired
HuaYangService service; //每一分钟执行一次
@Scheduled(cron = "0 0/1 * * * ?")
public void dealUpdateTask(){
System.out.println("定时更新数据库操作--->开始"); //只做最简单的 业务操作
service.scheduleUpdate(); System.out.println("定时更新数据库操作--->结束");
} }

=========================================================备注1=========================================================================

@Scheduled

1.cron属性的举例解析:

Seconds : 可出现", - * /"四个字符,有效范围为0-59的整数
Minutes : 可出现", - * /"四个字符,有效范围为0-59的整数
Hours : 可出现", - * /"四个字符,有效范围为0-23的整数
DayofMonth : 可出现", - * / ? L W C"八个字符,有效范围为0-31的整数
Month : 可出现", - * /"四个字符,有效范围为1-12的整数或JAN-DEc
DayofWeek : 可出现", - * / ? L C #"四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推
Year : 可出现", - * /"四个字符,有效范围为1970-2099年 下面简单举几个例子: "0 */1 * * * ?" 每隔1分钟执行一次定时任务
"0 */5 * * * ?" 每隔5分钟执行一次定时任务 "0 0 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分每分钟一次触发
"0 0/5 14 * * ?"    每天从下午2点开始到2:55分结束每5分钟一次触发
"0 0/5 14,18 * * ?"    每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发
"0 0-5 14 * * ?"    每天14:00至14:05每分钟一次触发
"0 10,44 14 ? 3 WED"    三月的每周三的14:10和14:44触发
"0 15 10 ? * MON-FRI"    每个周一、周二、周三、周四、周五的10:15触发

2.fixedRate属性

用来标志 上次定时任务 和 下次定时任务 之间的延时时长【不管上次的定时任务是否已经执行完成,延时时间一到,立刻执行下次定时任务】【所以如果上一个任务执行之间长于 延时时长,则会发生重复执行的情况】

【毫秒级】【默认-1L】【下面示例为 5秒钟】

【spring boot】spring boot中使用定时任务配置

3.fixedDelay属性

用来标志 上次定时任务 和 下次定时任务 之间的延时时长【需要等到上次定时任务执行完成 后,经过延时时长,再执行下次定时任务】

【毫秒级】【默认-1L】【下面示例为 5秒钟】

【spring boot】spring boot中使用定时任务配置

4.initialDelay属性

用来标志,服务启动后 第一次执行定时任务的延时时长

可以配合上面两个属性一起使用

【下面标志: 服务启动后,过10s执行第一次定时任务,之后每过5s执行一次定时任务】

【spring boot】spring boot中使用定时任务配置