Spring定时任务scheduled
Spring定时任务
一. cron 表达式
1. 概念:Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:
2. Cron表达式结构:Cron 从左到右(用空格隔开):秒 分 小时 月份中的日期 月份 星期中的日期 年份
3. 在线生成cron表达式:http://cron.qqe2.com/
4. Cron各字段含义:
注意:星期和日是冲突的,因此有星期数了,就不能有日
通用符号:,- * /
, : 表示枚举值。例如:在Minuttes域使用5,20,表示在时间的分钟数为5,20时触发事件
- : 表示范围。例如在Minutes域使用5-20,表示在时间的分钟数为5-20时每分钟都触发事件
* : 表示匹配该域的任意值,假如在Minutes域使用,表示时间分数不做限制。没分钟都触发
/ : 表示其实开始时间触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,表示分钟数为5时触发一次,后隔20分钟即25,45再分别触发一次事件。eg: 0 0 2 1 * ? //表示每个月的1号的2点执行
eg: 0 10,44 14 ?3 WED //在每年的3月份星期三的14点的10分和44分0秒执行一次专有符号:
?: 只能使用在DayofMonth和DayofWeek两个域,由于DayofMonth和DayofWeek互斥,必须对其一设置
L: 表示最后,只能出现在DayofWeek和DayofMonth域,如果DayofWeek域使用5L(从星期日计数),意味着在最后的一个星期四触发。
w: 表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在指定日期的最近有效工作日触发事件。eg: 5w //表示在每个月的5号的最近的一个工作日执行LW: 这两个可以连用,表示在某个月最后一个工作日
#; 用于确定每个月星期几,只能出现在DayofWeek域,例如4#2表示在每个月的第二个星期三执行
注意:专用符号除了?之外,spring都不支持
5. Demo
*/2 * * * * ? 或 0/2 * * * * ? //每两秒执行一次
0 0 1 1 * ? * //每月的1日的凌晨1点执行
0 0 9,12,17 * * ? //每天上午9点,下午12点,17点执行
0 10 12 * * ? 或 0 10 12 ? * * 或 0 10 12 * * ? * //每天上午12:10执行
0 30 1 L * ? //每月最后一日的凌晨1:30执行
0 0 12 ? * WED //每周三中午12点执行
二. spring定时任务步骤
1. 创建一个springBoot工程
2. 在启动类上加上加上@EnableScheduling注解
//开启支持定时任务
@EnableShceduling
3. 在需要执行定时任务的方法上加上@Scheduled注解并加上cron表达式
案例背景:你女朋友生病了,暖男一枚,出于关心,你要没给他发消息提醒她吃药,但是因为工作原因,无法及时的回复,身为程序员的你,通过定时任务发送消息。
package com.itheima.reggie;import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
//开始支持定时任务功能
@EnableScheduling
//启动类
@SpringBootApplication
//打印日志
@Slf4j
public class ReggieApplication {public static void main(String[] args) {SpringApplication.run(ReggieApplication.class,args);log.info("》》》》》》》》》》》》》》》》》》项目启动成功《《《《《《《《《《《《《《《《《《《");}@Scheduled(cron = "* * 8,12,19 * * ? ")public void takeMedicine(){log.info("该吃药了.................");}@Scheduled(cron = "* * 0/2 * * ? *")public void drinkWater(){log.info("该喝水了...............");}
}
Spring定时任务scheduled相关推荐
- Spring定时任务@scheduled多线程的使用(@Async注解)
1.开篇 在Spring定时任务@Scheduled注解使用方式浅窥这篇文章里面提及过,spring的定时任务默认是单线程的,他在某些场景下会造成堵塞,那么如果我们想让每一个任务都起一条线程去执行呢? ...
- spring定时任务Scheduled与定时任务线程池配置SchedulingConfigurer ,Java
spring定时任务Scheduled与定时任务线程池配置SchedulingConfigurer ,Java spring默认定时任务的使用 package zhangphil.demo;impor ...
- Spring定时任务@Scheduled注解使用配置方式(cron表达式、fixedRate和fixedDelay)
Spring定时任务@Scheduled注解使用配置方式(cron表达式.fixedRate和fixedDelay) 序言: 个人推荐一个很方便的在线Cron生成器(网页版):https://qqe2 ...
- Spring定时任务-@Scheduled
目的:使用Spring的@Scheduled实现定时任务 1.在spring的配置文件中加入以下配置: xmlns:task="http://www.springframework.org/ ...
- 【定时任务】——Spring定时任务Scheduled
定时任务在日常开发过程中非常常见,而且在日常的项目开发中也有多种实现方式,而且做任务调度的框架有很多种,小编最近的感受,如果想真正使用好任务调度还是存在困难的,所以分步学习,逐个击破!在这篇文章小编主 ...
- Spring定时任务@Scheduled注解使用方式浅窥(cron表达式、fixedRate和fixedDelay)
1.开篇 spring的@Scheduled定时任务相信大家都是十分熟悉.最近在使用过程中发现了一些问题,写篇文章,和大家分享一下.结论在最后,不想看冗长过程的小伙伴可以直接拉到最后看结论. 2.简单 ...
- spring 定时任务@Scheduled详解
1.注解@Scheduled只能用于满足下面两个条件的方法上: (1)没有返回类型,或者说返回类型为void: (2)没有参数: 2.springBoot 定时任务开启方式和使用形式 Springbo ...
- Spring 定时任务@Scheduled用法
基本用法 @Scheduled 由Spring定义,用于将方法设置为调度任务.如:方法每隔十秒钟被执行.方法在固定时间点被执行等 1. @Scheduled(fixedDelay = 1000) ...
- Spring: 定时任务 @Scheduled 原理分析
文章目录 简介 01 简单实用 02 原理分析 总结 简介 当一个方法被加上@Schedule注解,然后做一些相关配置,在Spring容器启动之后,这个方法就会按照@Schedule注解的配置周期性或 ...
最新文章
- MATLAB格式化输出控制
- String.charAT的运用
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96“...
- 【NoSQL】NoSQL入门和概述 - 笔记
- [渝粤教育] 中国地质大学 信息资源管理 复习题 (2)
- Find命令使用详解
- 起点计算机网,《零起点计算机》网第5课.pdf
- eclipse插件开发:自定义导航器中的拖拽定义
- Ecshop 商品页配送方式添加 实现仿淘宝按地区显示运费
- android系统知识(8.0)---Android O 启动优化
- 解决清除浮动的最佳办法
- 轻量级前端MVVM框架avalon - 初步接触
- JavaScript的document对象详解
- vue中rule数据校验
- 爆料称macOS Ventura正式版预计将于10月最后一周推出 支持新款14/16英寸MacBook Pro
- excel文件导出、下载的响应类型设置
- Switch语句用法及案例
- python 办公自动化 视频教程_先导课-python办公自动化
- 分布式系列之分布式计算框架Flink深度解析
- img_sec_check 微信图片检测41005
热门文章
- 英雄联盟服务器维护公告2019,lol维护到几点今天 英雄联盟维护公告2021最新
- chrome 窗体高度_浏览器几种高度宽度
- XP停止更新 企业电脑该选择什么安全软件
- 产品经理学习网站和工具
- 教育就是养成10个良好习惯
- it日语 IT日本語(2)
- mysql怎么查询函数用法_MYSQL 查询重要函数
- angularjs数据重复,查询数据是否存在
- 苹果手机的siri在哪里_苹果手机轻敲背面3次自动录音,这个黑科技功能,我真是爱了|苹果手机|手机|siri...
- 待人友善是教养 独来独往是性格