Spring的定时任务 cron表达式


cron表达式是什么:首先cron是表示计划任务,也就是说cron表达式通常用于配置计划任务的触发时间。

一个cron表达式是一个由六个或者七个子表达式(字段)组成的字符串。而子表达式或者称为字段之间用空格隔开。

字段名 是否必需 允许的值 允许的特殊字符
秒(seconds) Y 0-59 , - * /
分(minutes) Y 0-59 , - * /
时(hours) Y 0-23 , - * /
天(day of month) Y 1-31 , - * /L W C
月(month) Y 0-11 或者 JAN-DEC , - * /
星期(day of week) Y 1-7 或者 SUN-SAT , - * /?L C#
年(year) N 1970-2099或者不写 , - * /

这时就可以明白前面所说的六个或者七个子表达式或者字段是什么意思了,从第一位到最后一位分别表示秒 分 时 天 月 星期 年 最后一位年可以不写。

Cron 触发器利用一系列特殊字符,如下所示:

反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。

问号(?)字符和字母 L 字符只有在月内日期和周内日期字段中可用。问号表示这个字段不包含具体值。所以,如果指定月内日期,可以在周内日期字段中插入“?”,表示周内日期值无关紧要。

字母 L 字符是 last 的缩写。放在月内日期字段中,表示安排在当月最后一天执行。在周内日期字段中,如果“L”单独存在,就等于“7”,否则代表当月内周内日期的最后一个实例。所以“0L”表示安排在当月的最后一个星期日执行。

在月内日期字段中的字母(W)字符把执行安排在最靠近指定值的工作日。把“1W”放在月内日期字段中,表示把执行安排在当月的第一个工作日内。

井号(#)字符为给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。

星号(*)字符是通配字符,表示该字段可以接受任何可能的值。

下面在举例中详细说明:

表达式 表达的时间
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 * * ? 每天下午14点钟开始到14点59分结束这么一个时间段
0 0/5 14 * * ? 每天下午14点到14点55分之间每5分钟触发一次
0 0/5 14,18 * * ? 每天下午14点到14点55分 和18点到18点55分之间  每5分钟触发一次
0 0-5 14 * * ? 每天下午14点开始到14点05结束
0 10,44 14 ? 3 WED 每年三月份的每个周三下午14点10分和14点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 0 12 1/5 * ? 每个月从第一天开始每隔5天中午12点触发一次
0 11 11 11 11 ? 每年11月11号11点11分

0 6 * * * 每天早上6点
0 */2 * * * 每两个小时
0 23-7/2,8 * * * 晚上11点到早上8点之间每两个小时,早上八点
0 11 4 * 1-3 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 4 1 1 * 1月1日早上4点
例子如下:

/**
 * 常规定时任务
 */
@Component("timingTask")
public class BSS_soa_jobController {
    @Autowired
    private BSS_soa_baseService baseService = null;

   // 每天23:55插入明天数据
    @Scheduled(cron = "0 55 23 ? * *")
    public void addTomrrowData() {
        baseService.addDaliyData();
    }

   // 如果在当天10点前未将5天前的数据提交到系统,做微信推送      每天上午10:15触发
    @Scheduled(cron = "0 15 10 ? * *" )
    public void Timer() {

    }
}
 
时间: 2024-12-28 10:29:11

Spring的定时任务 cron表达式的相关文章

定时任务cron表达式解析

cron表达式2种: Seconds Minutes Hours DayofMonth Month DayofWeek Year或 Seconds Minutes Hours DayofMonth Month DayofWeek 秒 分 时 日 月 星期 年 字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 星期 1-7 或

quartz定时任务cron表达式详解

cron表达式用于配置cronTrigger的实例.cron表达式实际上是由七个子表达式组成.这些表达式之间用空格分隔. 1.Seconds (秒)2.Minutes(分)3.Hours(小时)4.Day-of-Month  (天)5.Month(月)6.Day-of-Week (周)7.Year(年) 例:"0 0 12 ? * WED" 意思是:每个星期三的中午12点执行. 个别子表达式可以包含范围或者列表.例如:上面例子中的WED可以换成"MON-FRI",&

定时任务cron表达式详解

cron表达式 顺序 秒 分钟 小时 日期 月份 星期 年(可选) 取值 0-59 0-59 0-23 1-30(31) 1-12 1-7   允许特殊字符 , - * / , - * / , - * / , - * / ? L W C , - * / , - * / L # C 1970-2099 , - * / 字段含义 *:代表所有可能的值 -:指定范围 ,:列出枚举  例如在分钟里,"5,15"表示5分钟和20分钟触发 /:指定增量  例如在分钟里,"3/15&quo

(2)Spring集成Quartz定时任务框架介绍和Cron表达式详解

在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码.使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下面介绍它们集成方法和Cron表达式的详细介绍. 一.增加所依赖的JAR包1.增加Spring的Maven依赖 <dependency> <groupId>org

Spring定时任务@Scheduled的cron表达式

Spring定时任务@Scheduled可以使用cron表达式,来定时时间节点和频率. 一个cron表达式至少有6个(也可能7个)有空格分隔的时间元素. 按顺序依次为 秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你需要考虑你月的天数) 月(1~12) 天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) 7.年份(1970-2099) 其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(

Spring 定时任务之 @Scheduled cron表达式

一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素. 按顺序依次为 秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你需要考虑你月的天数) 月(0~11) 天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) 7.年份(1970-2099) 其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符.由于"月份中的日期"和&q

Quartz cron 表达式(linux 定时器,java 定时任务,spring task定时任务)

Quartz cron 表达式的格式十分类似于 UNIX cron 格式,但还是有少许明显的区别.区别之一就是 Quartz 的格式向下支持到秒级别的计划,而 UNIX cron 计划仅支持至分钟级.许多我们的触发计划要基于秒级递增的(例如,每45秒),因此这是一个非常好的差异. 在 UNIX cron 里,要执行的作业(或者说命令)是存放在 cron 表达式中的,在第六个域位置上.Quartz 用 cron 表达式存放执行计划.引用了 cron 表达式的 CronTrigger 在计划的时间里

@Scheduled执行定时任务与cron表达式

1 配置文件形式执行定时任务 1 1.X 版本与spring结合使用实例 1.1 常用maven管理 pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://

spring注解@Scheduled中fixedDelay、fixedRate和cron表达式的区别

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/sch