zoukankan      html  css  js  c++  java
  • spring boot 调度任务

    1.引入spring boot所依赖的jar包 

    
    
    <parent>   
        <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.0.RELEASE</version>
        </parent>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    
    
    
    
    2.使用 @Scheduled 标记需要调度的方法
    
    
    package com.mouzhi.springboot;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    @Component
    public class ScheduledTasks {
        private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class);
    
        private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
    
        @Scheduled(fixedRate = 5000)
        public void reportCurrentTime(){
            logger.info("The time is now {}", dateFormat.format(new Date()));
        }
    }
    
    
    


    3.在项目启动项配置
    @EnableScheduling 确保创建后台任务执行程序。没有它,没有任何计划。
    
    
    package com.mouzhi.springboot;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.scheduling.annotation.EnableScheduling;
    
    @SpringBootApplication
    @EnableScheduling
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class);
        }
    }
    
    
    


    4.@scheduled参数说明

      @Scheduled(fixedRate=2000):上一次开始执行时间点后2秒再次执行;

           @Scheduled(fixedDelay=2000):上一次执行完毕时间点后2秒再次执行;

           @Scheduled(initialDelay=1000, fixedDelay=2000):第一次延迟1秒执行,然后在上一次执行完毕时间点后2秒再次执行;

           @Scheduled(cron="* * * * * ?"):按cron规则执行。

      常用的cron表达式 

      0 10,14,16 * * ? 每天上午10点,下午2点,4点
      0/30 9-17 * * ? 朝九晚五工作时间内每半小时
      0 12 ? * WED 表示每个星期三中午12点
      "0 0 12 * * ?" 每天中午12点触发
      "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 15 10 ? * *" 每天上午10:15触发
      "0 15 10 * * ?" 每天上午10:15触发
      "0 15 10 * * ? *" 每天上午10:15触发
      "0 15 10 * * ? 2005" 2005年的每天上午10:15触发

      在线Cron表达式生成器:http://cron.qqe2.com/

  • 相关阅读:
    第二次编程作业总结
    structs get 方法乱码问题
    网址记录
    尸体解剖报告
    最后冲刺
    回答自己的提问——对自己最大的反馈
    构建之法13-17章读后感
    典型场景
    对其他各团队的评价
    用户调研
  • 原文地址:https://www.cnblogs.com/gyli20170901/p/8602786.html
Copyright © 2011-2022 走看看