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}")

springboot 定时任务的更多相关文章

  1. springboot 定时任务部署至linux服务器上后会执行两次问题

    springboot定时任务在本地运行时,正常执行且只执行一次,但是在maven打包成war包,部署至linux服务器上之后,定时任务奇怪的执行了两次. 由于未做负载均衡,所以可以先排除是因为多台服务 ...

  2. Spring boot(三) springboot 定时任务

    这个不多说,springboot 定时任务非常简单就可以实现了. 30s运行一次 , @Scheduled(cron="0,30 * * * * ?") 通过这个控制定时时间 cr ...

  3. springboot定时任务之旅

    springboot定时任务 假设场景:单体应用的定时任务,假设我们已经有了一个搭建好的springboot应用,但是需要添加一个定时执行的部分(比如笔者遇到的是定时去请求一个接口数据来更新某个表), ...

  4. SpringBoot定时任务@Scheduled

    SpringBoot定时任务主要由两个注解完成. @Scheduled加在方法上面. @EnableScheduling加在类上面.可以是Application类,也可以是@Component类,还可 ...

  5. 小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_41、SpringBoot定时任务schedule讲解

    笔记 1.SpringBoot定时任务schedule讲解     简介:讲解什么是定时任务和常见定时任务区别 1.常见定时任务 Java自带的java.util.Timer类            ...

  6. SpringBoot学习笔记(七):SpringBoot使用AOP统一处理请求日志、SpringBoot定时任务@Scheduled、SpringBoot异步调用Async、自定义参数

    SpringBoot使用AOP统一处理请求日志 这里就提到了我们Spring当中的AOP,也就是面向切面编程,今天我们使用AOP去对我们的所有请求进行一个统一处理.首先在pom.xml中引入我们需要的 ...

  7. SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)

    最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式.本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数 ...

  8. SpringBoot定时任务 - 什么是ElasticJob?如何集成ElasticJob实现分布式任务调度?

    前文展示quartz实现基于数据库的分布式任务管理和job生命周期的控制,那在分布式场景下如何解决弹性调度.资源管控.以及作业治理等呢?针对这些功能前当当团队开发了ElasticJob,2020 年 ...

  9. SpringBoot定时任务 - 开箱即用分布式任务框架xxl-job

    除了前文介绍的ElasticJob,xxl-job在很多中小公司有着应用(虽然其代码和设计等质量并不太高,License不够开放,有着个人主义色彩,但是其具体开箱使用的便捷性和功能相对完善性,这是中小 ...

  10. 带着新人学springboot的应用10(springboot+定时任务+发邮件)

    接上一节,环境一样,这次来说另外两个任务,一个是定时任务,一个是发邮件. 1.定时任务 定时任务可以设置精确到秒的准确时间去自动执行方法. 我要一个程序每一秒钟说一句:java小新人最帅 于是,我就写 ...

随机推荐

  1. Loj #2192. 「SHOI2014」概率充电器

    Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...

  2. C++ 最简单的日志类

    最近搞一个 C++ 项目的二次开发,没玩过 C++,可谓步履维艰.自己写个简单的日志类都被各种坑折磨.终于搞定了. 参考了这篇博客,并且进一步简化:https://www.cnblogs.com/Ds ...

  3. SpringBoot2.0 项目异常日志,但不影响运行(待解决)

    第一种: 2019-04-17 01:46:33 [INFO] [org.apache.juli.logging.DirectJDKLog:175] - Error parsing HTTP requ ...

  4. asp.net core导出导入excel

    使用NPOI导入导出excel,已经封装好Action可以直接调用 导出 效果图 使用方法 定义导出实体 class Student { public int Id { get; set; } pub ...

  5. 解决Linux启动redis时出现提示权限不够问题

    如果权限不够请使用一条命令 chmod 777  操作 参考:https://blog.csdn.net/zczzsq/article/details/8162339

  6. python的进程与线程(二)

    线程 之前了解了操作系统的发展史,也知道了进程和线程的概念,归纳一下就是:         进程:本质上就是一段程序的运行过程(抽象的概念)         线程:最小的执行单元,是进程的实体     ...

  7. [截稿日期] 人机交互与普适计算方向的A、B类国际会议

    CCF推荐的人机交互与普适计算方向的A.B类会议截稿日期 一.A类 序号 会议简称 会议全称 出版社   截稿日期 网址 1 CHI ACM Conference on Human Factors i ...

  8. .NET CAD二次开发学习 直线画矩形并转换成组

    主要代码: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System ...

  9. entity framework 实现按照距离排序

    在做项目时,经常会遇到“离我最近”这种需求.顾名思义,它需要根据用户的经纬度和事物的经纬度计算距离,然后进行排序,最后分页(当然这些操作要在数据库中进行,否则就变成假分页了). 我们通常可以用sql语 ...

  10. MySQL 笔记整理(18) --为什么这些SQL语句逻辑相同,性能却差异巨大?

    笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 18) --为什么这些SQL语句逻辑相同,性能却差异巨大? 本篇我们以三 ...