spring boot中使用定时任务配置
==================================================================================================================================
首先得创建一个spring boot项目吧,使用idea创建spring boot项目 本博客有教程
【本文完整代码 可参见 GItHub】
==================================================================================================================================
使用步骤如下
【千万注意:一定要在启动类添加注解,否则定时任务无效】
1.在启动类 添加 开启定时任务 注解@EnableScheduling
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秒钟】
3.fixedDelay属性
用来标志 上次定时任务 和 下次定时任务 之间的延时时长【需要等到上次定时任务执行完成 后,经过延时时长,再执行下次定时任务】
【毫秒级】【默认-1L】【下面示例为 5秒钟】
4.initialDelay属性
用来标志,服务启动后 第一次执行定时任务的延时时长
可以配合上面两个属性一起使用
【下面标志: 服务启动后,过10s执行第一次定时任务,之后每过5s执行一次定时任务】