CronTrigger表达式和Quartz使用实例入门

CronTrigger表达式和Quartz使用实例入门CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,如每月8日发工资的定时任务。CronTrigger,你可以指定触发的时间表如“每星期五中午”,或“每个工作日9:30时”,甚至“每5分钟一班9:00和10:00逢星期一上午,星期三星期五“。一、CronExpressionscro

CronTrigger表达式和Quartz使用实例入门CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,如每月8日发工资的定时任务。

CronTrigger,你可以指定触发的时间表如“每星期五中午”,或“每个工作日9:30时”,甚至“每5分钟一班9:00和10:00逢星期一上午,星期三星期五“。

一、Cron Expressions

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:00 执行,

个别子表达式可以包含范围, 例如,在前面的例子里(“WED”)可以替换成 “MON-FRI”, “MON, WED, FRI”甚至”MON-WED,SAT”.

“*” 代表整个时间段.

每一个字段都有一套可以指定有效值,如

Seconds (秒)         :可以用数字0-59 表示,

Minutes(分)          :可以用数字0-59 表示,

Hours(时)             :可以用数字0-23表示,

Day-of-Month(天) :可以用数字1-31 中的任一一个值,但要注意一些特别的月份

Month(月)            :可以用0-11 或用字符串  “JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV and DEC” 表示

Day-of-Week(每周):可以用数字1-7表示(1 = 星期日)或用字符口串“SUN, MON, TUE, WED, THU, FRI and SAT”表示

“/”:为特别单位,表示为“每”如“0/15”表示每隔15分钟执行一次,“0”表示为从“0”分开始, “3/20”表示表示每隔20分钟执行一次,“3”表示从第3分钟开始执行

“?”:表示每月的某一天,或第周的某一天

“L”:用于每月,或每周,表示为每月的最后一天,或每个月的最后星期几如“6L”表示“每月的最后一个星期五”

“W”:表示为最近工作日,如“15W”放在每月(day-of-month)字段上表示为“到本月15日最近的工作日”

““#”:是用来指定“的”每月第n个工作日,例 在每周(day-of-week)这个字段中内容为”6#3″ or “FRI#3” 则表示“每月第三个星期五”

1)Cron表达式的格式:秒 分 时 日 月 周 年(可选)。

               字段名                 允许的值                        允许的特殊字符  

               秒                         0-59                               , – * /  

               分                         0-59                               , – * /  

               小时                     0-23                               , – * /  

               日                         1-31                               , – * ? / L W C  

               月                         1-12 or JAN-DEC         , – * /  

               周几                     1-7 or SUN-SAT           , – * ? / L C #  

               年 (可选字段)     empty, 1970-2099      , – * /

               “?”字符:表示不确定的值

               “,”字符:指定数个值

               “-”字符:指定一个值的范围

               “/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m

               “L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X

               “W”字符:指定离给定日期最近的工作日(周一到周五)

               “#”字符:表示该月第几个周X。6#3表示该月第3个周五

2)Cron表达式范例:

                 每隔5秒执行一次:*/5 * * * * ?

                 每隔1分钟执行一次:0 */1 * * * ?

                 每天23点执行一次:0 0 23 * * ?

                 每天凌晨1点执行一次:0 0 1 * * ?

                 每月1号凌晨1点执行一次:0 0 1 1 * ?

                 每月最后一天23点执行一次:0 0 23 L * ?

                 每周星期天凌晨1点实行一次:0 0 1 ? * L

                 在26分、29分、33分执行一次:0 26,29,33 * * * ?

                 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

二、CronTrigger使用(用的spring3.1.3套jar包 和  quartz-1.7.3.jar)

  1) 配置文件application-quartz.xml内容如下

<?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/schema/context”


xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd”>





<bean id = “testSyncTask”   class = “com.quartz.TestSyncTask”></bean>


<!– 需要被定时执行的任务 –>


<!– spring的quartz中,将任务和触发器集成,testTask为复杂触发器–>


<bean id=”testTask” class=”org.springframework.scheduling.quartz.CronTriggerBean”>


           <property name=”cronExpression” value=”0 1 18 20 * ?” />


           <property name=”jobDetail”>


               <bean class=”org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean”>


      <property name=”targetObject” ref=”testSyncTask”/><!– testSyncTask真正的任务类–>


<property name=”targetMethod” value=”printTask” /><!– testSyncTask真正的任务类方法–>


</bean>


</property>


</bean>









<!– 定时任务列表 –>


<bean class=”org.springframework.scheduling.quartz.SchedulerFactoryBean”>


<property name=”configLocation” value=”classpath:springquartz.properties” />


<property name=”triggers”>


<list> 


<ref bean=”testTask” />


</list>


</property>


</bean>

</beans>

 2)TestSyncTask 类:

public class TestSyncTask {

public void printTask() throws JobExecutionException {


System.out.println(“任务正在执行,执行时间: ” + Calendar.getInstance().getTime());


for( int i = 0; i < 10; i++){


System.out.println(“这是数字: “+i);


}


}





public static void main(String[] args) throws Throwable {





ApplicationContext applicationContext = new ClassPathXmlApplicationContext(“application-quartz.xml”);


TestSyncTask t = (TestSyncTask) applicationContext.getBean(“testSyncTask”);

        t.printTask();


}

}


3)springquartz.properties内容如下:

org.quartz.scheduler.instanceName = Schedule

org.quartz.scheduler.instanceId = 1

org.quartz.scheduler.rmi.export = false  

org.quartz.scheduler.rmi.proxy = false

   

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool  

org.quartz.threadPool.threadCount = 4

   

org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

今天的文章CronTrigger表达式和Quartz使用实例入门分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/32707.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注