zoukankan      html  css  js  c++  java
  • springboot 定时任务

    1.启动类新增注解 @EnableScheduling

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.scheduling.annotation.EnableScheduling;
    
    /**
     * @describe: 定时任务启动类  EnableScheduling:发现注解@Scheduled的任务并后台执行。
     * @author: zhucw
     * @date: 2019/3/11 10:23
     */
    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableScheduling
    public class TaskApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(TaskApplication.class, args);
    	}
    
    }
    
    

    2.定时任务类

    package com.wdlcoud.rps.task.tasks;
    
    import com.wdcloud.rps.utils.AppUtil;
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    
    
    /**
    /**
     * @describe: 定时任务
     * @author: zhuchunwang
     * @date: 2019/3/11 10:24
     */
    @Component
    public class AppTask {
    
    
    	/**
    	 * 1分钟执行一次
    	 */
    	@Scheduled(fixedDelay = 60 * 1000)
    	public void testOneMinute(){
    		System.out.println("===="+ AppUtil.getFormatDate() +"===>>>=testOneMinute执行");
    	}
    	/**
    	 * 10秒执行一次
    	 */
    	@Scheduled(fixedDelay = 10 * 1000)
    	public void testTenMinute(){
    		System.out.println("===="+AppUtil.getFormatDate()+"===>>>=testTenSenConds执行");
    	}
    
    	/**
    	 * cron表达式
    	 * 每天14点29执行
    	 */
    	@Scheduled(cron = "0 32 14 ? * *")
    	public void testTask1432() {
    		System.out.println("===="+AppUtil.getFormatDate()+"===>>>=testTask1432执行");
    	}
    
    	/**
    	 *cron规则:
    	 * 秒(0~59)
    	 * 分钟(0~59)
    	 * 小时(0~23)
    	 * 天(月)(0~31,但是你需要考虑你月的天数)
    	 * 月(0~11)
    	 * 天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
    	 * 年份(1970-2099)
    	 *
    	 * 【0 0 10,14,16 * * ?】   每天上午10点,下午2点,4点
    	 * 【0 0/30 9-17 * * ?】  朝九晚五工作时间内每半小时
    	 * 【0 0 12 ? * WED 】表示每个星期三中午12点
    	 * 【0 0 12 * * ?】每天中午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期间的每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触发
    	 */
    
    }
    

    3.cron 规则

    • 秒(0~59)
    • 分钟(0~59)
    • 小时(0~23)
    • 天(月)(0~31,但是你需要考虑你月的天数)
    • 月(0~11)
    • 天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
    • 年份(1970-2099)

    4.cron 示例

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

    5.fixedDelay 和 fixedRate的区别

    比如都是5*1000 5秒

    • fixedDelay 是不管上次任务执行多长时间 下次任务都在5秒后执行
    • fixedRate 上次任务如果执行花了3秒 那下次就在2秒后执行,上次任务花了6秒 下次任务在上次任务结束后马上就执行

    6.fixedDelay 和 fixedRate 怎么使用配置文件?

    使用它们的String类型

    @Scheduled(fixedRateString = "${task.fixed.resourceTask}")
    

    7.cron 使用配置文件

    @Scheduled(cron =  "${task.cron.testCron}")
    
  • 相关阅读:
    电子设计基础——有效值检波技术
    电子设计基础——电源的各项指标及测量方法
    电子设计基础——电源的各项指标及测量方法
    计算机网络——IP地址与MAC地址
    计算机网络——IP地址与MAC地址
    LDC1000学习资料
    移动端制作公共样式reset
    单行、多行溢出省略
    垂直居中常用布局
    移动端rem布局必要的meta和script
  • 原文地址:https://www.cnblogs.com/zhucww/p/10510535.html
Copyright © 2011-2022 走看看