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. 20170319 - pycurl 提示 libcurl link-time version is older than compile-time version

    使用 conda update anaconda 升级后,运行程序得到如下提示: ImportError: pycurl: libcurl link-time version (7.45.0) is ...

  2. Storm入门(八)Storm实战常见问题总结(持续更新)

    一.本地环境log级别设置问题 storm-core-1.1.0.jar下面有个log4j2.xml文件,默认log级别是info. <configuration monitorInterval ...

  3. VMware端口映射配置步骤

    1:编辑->虚拟网络编辑器 2:点击NAT模式-->NAT设置 3:注意:主机端口就是物理机的端口,虚拟机就是wmware中的系统 点击添加

  4. SpringBoot基础系列一

    SpringBoot基础知识概览 特性 核心理念:约定优于配置 特点: 1. 开箱即用,根据项目依赖自动配置 2. 功能强大的服务体系,如嵌入式服务.安全 3. 绝无代码生成,不用写.xml配置,用注 ...

  5. Spring之旅第五篇-AOP详解

    一.什么是AOP? Aspect oritention programming(面向切面编程),AOP是一种思想,高度概括的话是“横向重复,纵向抽取”,如何理解呢?举个例子:访问页面时需要权限认证,如 ...

  6. 常见的Python脚本

    1.冒泡排序 lis = [56,12,1,8,354,10,100,34,56,7,23,456,234,-58] def sortport(): for i in range(len(lis)-1 ...

  7. python中的编码与解码

      编码与解码 首先,明确一点,计算机中存储的信息都是二进制的   编码/解码本质上是一种映射(对应关系),比如‘a’用ascii编码则是65,计算机中存储的就是00110101,但是显示的时候不能显 ...

  8. Spring Boot(六):如何优雅的使用 Mybatis

    *:first-child{margin-top: 0 !important}.markdown-body>*:last-child{margin-bottom: 0 !important}.m ...

  9. Linux高级命令进阶(week1_day2)--技术流ken

    输出重定向 场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术. >:覆盖输出,会覆盖掉原先的文件内容 ...

  10. [Nodejs] node写个hello,world

    http 模块 与 hello world hello world let http = require("http"); http .createServer((request, ...