zoukankan      html  css  js  c++  java
  • 【spring boot】spring boot中使用定时任务配置

    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执行一次定时任务】

  • 相关阅读:
    Dubbo (开源分布式服务框架)
    Springboot+Jpa的使用
    springboot(十二):springboot如何测试打包部署
    Java NIO:IO与NIO的区别
    eclipse下搭建shell脚本编辑器--安装开发shell的eclipse插件shelled
    spring boot
    【微服务架构】SpringCloud组件和概念介绍
    java正则表达式
    java的反射机制原理
    nginx代理服务器
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9289991.html
Copyright © 2011-2022 走看看