Spring学习:Spring调度任务--精确指定任务的运行时间
2007-09-22 17:09
375 查看
前面我们在调度一个工作的时候使用的是SimpleTriggerBean,它的配置如下:
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="jobDetail"/>
</property>
<property name="repeatInterval">
<value>60000</value>
</property>
</bean>
这里我们设置了每隔一分钟执行一次我们创建的工作。SimpleTriggerBean只能让我们指定工作执行的频率,不能让我们指定工作执行的具体时间。比方说,我们要求在每天的晚上10点执行某个具体的工作,那么SimpleTriggerBean就不能满足我们的需求了,这个时候我们需要使用另外一个bean:CronTriggerBean。一个简单的配置如下:
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="jobDetail"/>
</property>
<property name="cronExpression">
<value>0 0 22 * * ? *</value>
</property>
</bean>
这个配置指定了每天晚上10点执行我们的工作,使用CronTriggerbean我们可以精确的控制任务运行的时间,这个运行时间我们是通过cronExpression属性指定的,它是一个cron表达式,下面说一下这个表达式的语法。
一个cron表达式有6个必选的元素和一个可选的元素,各个元素之间是以空格分隔的,从左至右,这些元素的含义如下表所示:
*:代表所有可取的值,比如说,如果分钟为*,那么就表示每一分钟;
?:只有月份中的天数和星期中的天数可以使用?来表示,因为“月份中的天数”和“星
期中的天数”不能同时设值,所以我们可以通过?来表明不想设置的那个元素;
-:用来指定一个范围类的值,比如说,小时为”10-12”,它就表示10点、11点、12点
,:逗号用来分隔一个元素的多个值,比如说“星期中的天数”为"MON,WED,FRI",
它就表示周一、周三和周五。
/:斜杠用来表示间隔,比如说,秒数为5/10,那么它就表示第5秒、第15秒、第
25秒、第35秒、第45秒和第55秒。斜杠前的数字表示起始位置,后面的数字表
示每次增长的数量。
L:仅用在“月份中的天数”和“星期中的天数”元素中。如果是前者,它代表某月的
最后一天;如果是后者,它就表示是周六。有一点特别的,当表示“星期中的天数”
时,L可以和数字一起用,比如”6L”,它就表示这个月的最后一个星期五。
W:只能用来表示“月份中的天数”,和数字一起使用。比如说15W,它就表示离这
个月15号最近的工作日。使用W时,“月份中的天数”必须为一个指定的日期,
而不能是一个范围的日期。
#:只能用来表示“星期中的天数”。例如5#4,它表示某个月中第四个星期四,2#1
表示某个月中第一个星期一。#前面的数字代表星期,后面的数字表示是第几个。
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="jobDetail"/>
</property>
<property name="repeatInterval">
<value>60000</value>
</property>
</bean>
这里我们设置了每隔一分钟执行一次我们创建的工作。SimpleTriggerBean只能让我们指定工作执行的频率,不能让我们指定工作执行的具体时间。比方说,我们要求在每天的晚上10点执行某个具体的工作,那么SimpleTriggerBean就不能满足我们的需求了,这个时候我们需要使用另外一个bean:CronTriggerBean。一个简单的配置如下:
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="jobDetail"/>
</property>
<property name="cronExpression">
<value>0 0 22 * * ? *</value>
</property>
</bean>
这个配置指定了每天晚上10点执行我们的工作,使用CronTriggerbean我们可以精确的控制任务运行的时间,这个运行时间我们是通过cronExpression属性指定的,它是一个cron表达式,下面说一下这个表达式的语法。
一个cron表达式有6个必选的元素和一个可选的元素,各个元素之间是以空格分隔的,从左至右,这些元素的含义如下表所示:
代表含义 | 是否必须 | 允许的取值范围 | 允许的特殊符号 |
秒 | 是 | 0-59 | , - * / |
分钟 | 是 | 0-59 | , - * / |
小时 | 是 | 0-23 | , - * / |
月份中的天数 | 是 | 1-31 | , - * / ? L W C |
月份 | 是 | 1-12或JAN-DEC | , - * / |
星期中的天数 | 是 | 1-7或SUN-SAT | , - * / ? L # |
年 | 否 | empty,1970-2099 | , - * / |
?:只有月份中的天数和星期中的天数可以使用?来表示,因为“月份中的天数”和“星
期中的天数”不能同时设值,所以我们可以通过?来表明不想设置的那个元素;
-:用来指定一个范围类的值,比如说,小时为”10-12”,它就表示10点、11点、12点
,:逗号用来分隔一个元素的多个值,比如说“星期中的天数”为"MON,WED,FRI",
它就表示周一、周三和周五。
/:斜杠用来表示间隔,比如说,秒数为5/10,那么它就表示第5秒、第15秒、第
25秒、第35秒、第45秒和第55秒。斜杠前的数字表示起始位置,后面的数字表
示每次增长的数量。
L:仅用在“月份中的天数”和“星期中的天数”元素中。如果是前者,它代表某月的
最后一天;如果是后者,它就表示是周六。有一点特别的,当表示“星期中的天数”
时,L可以和数字一起用,比如”6L”,它就表示这个月的最后一个星期五。
W:只能用来表示“月份中的天数”,和数字一起使用。比如说15W,它就表示离这
个月15号最近的工作日。使用W时,“月份中的天数”必须为一个指定的日期,
而不能是一个范围的日期。
#:只能用来表示“星期中的天数”。例如5#4,它表示某个月中第四个星期四,2#1
表示某个月中第一个星期一。#前面的数字代表星期,后面的数字表示是第几个。
相关文章推荐
- Spring调度任务cronjob 精确指定任务的运行时间
- Spring调度任务cronjob 精确指定任务的运行时间
- Spring调度任务cronjob 精确指定任务的运行时间
- Spring Quartz任务调度示例(指定一个时间触发调度任务)
- Spring Quartz任务调度示例(指定一个时间触发调度任务)
- spring与quart整合实现任务调度_学习笔记
- Spring中的时间调度,定时任务
- spring学习笔记spring整合Quartz持久化稳健任务调度(2)
- Spring中的时间调度,定时任务
- Spring中的时间调度,定时任务
- JS判断是否到达指定时间,执行任务,可以精确到秒。
- spring+quartz定时器任务调度(时间配置比timer灵活的多)
- Spring 整合 Quartz 任务调度框架学习笔记
- Spring4学习:任务调度和异步执行器之Quartz框架
- Quartz学习---入门demo【任务调度的运行信息在内存】(一)
- Spring3 + Quartz1.6.2精确的任务调度,并注入service
- Spring学习:使用Spring调度任务
- at 命令来安排命令、脚本或程序在指定的日期和时间运行。您也可以使用此命令查看现有的计划任务。
- spring学习笔记(25)spring整合quartz多版本实现企业级任务调度
- Python的任务调度模块APScheduler学习3(作业运行控制-trigger)