`
jiangshunming
  • 浏览: 16752 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

quartz 框架学习

阅读更多
下列有关与单个测试用例,包含有关与spring整合时的配置
CronTrigger:

CronTriggerTest.java

public class CrontriggerTest{
  public void task() throws SchedulerException{
    //创建一个任务工厂
    SchedulerFactory schedulerFactory = new StdSchedulerFactory();
    //创建一个任务
    Scheduler scheduler= schedulerFactory.getScheduler();
    //通过构造函数初始化一个作业任务
     JobDetail jobDetail = new JobDetail("jobDetail", "jobDetailGroup", RunTask.class);//RunTask.class为要运行的bean
    //通过构造函数初始化一个触发器
     CronTrigger cronTrigger = new CronTrigger("cronTrigger", "triggerGroup");
    //设置运行时间表达式
    CronExpression cexp = new CronExpression("0/7 * * * * ?");
    cronTrigger.setCronExpression(cexp);
    //调度一个作业通过任务作业和触发器
    scheduler.schedulerJob(jobDetail, cronTrigger);
  }

   public static void main(String[] args){
     //test run main.......
   }
}


public class RunTask implements Job{ //要实现的接口

  private static int count = 0;
 
  //要实现的接口的方法
  public void execute(JobExecutionContext context) throws JobExecutionException {
    System.out.println("hello jiangshunming" + new Date() + count++);
}

}


SimpleTriggerTest.java

public class SimpleTrigerTest {
   public void task() throws SchedulerException{
    //创建一个任务工厂
    SchedulerFactory schedulerFactory = new StdSchedulerFactory();
    //创建一个任务
    Scheduler scheduler= schedulerFactory.getScheduler();
    //通过构造函数初始化一个作业任务
    JobDetail jobDetail = new JobDetail("jobDetail", "jobDetailGroup", RunTask.class);
    //通过构造函数初始化一个触发器
     SimpleTrigger simpleTrigger = new SimpleTrigger("simpleTrigger", "triggerGroup");
    simpleTrigger.setStartTime(new Date());
    simpleTrigger.setRepeatInterval(2000);
    simpleTrigger.setRepeatCount(10);

    scheduler.scheduleJob(jobDetail, SimpleTrigger);
    scheduler.start();
  }

}




<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--启动工厂-->
<bean id="z"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
</list>
</property>
</bean>

<!--实际运行作业任务的bean-->
<bean id="bookStockChecker"
class="org.springside.bookstore.components.quartz.BookStockChecker">
</bean>
<!--设定任务启动时运行的方法-->
<bean id="jobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >
<property name="targetObject">
<ref bean="bookStockChecker" />
</property>
<property name="targetMethod">
<value>check</value>
</property>
</bean>

<!--定时器,设置任务启动时间类型(下面有关于时间介绍)-->
<bean id="cronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="jobDetail" />
</property>
<property name="cronExpression">
<value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
</property>
</bean>

</beans>


关于 CronExpression 时间表达式:
字段         允许值               允许的特殊字符  
秒           0-59                 , - * /  
分           0-59                 , - * /  
小时         0-23                 , - * /  
日期         1-31                 , - * ? / L W C  
月份         1-12 或者 JAN-DEC    , - * /  
星期         1-7 或者 SUN-SAT     , - * ? / L C #  
年(可选)   留空, 1970-2099      , - * /  
“*”字符被用来指定所有的值。如:”*“在分钟的字段域里表示“每分钟”。
“?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。看下面的例子你就会明白。
月份中的日期和星期中的日期这两个元素时互斥的一起应该通过设置一个问号(?)来表明不想设置那个字段。
“-”字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。
“,”字符被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。
“/”字符用于指定增量。如:“0/15”在秒域意思是没分钟的0,15,30和45秒。“5/15”在分钟域表示没小时的5,20,35和50。符号“*”在“/”前面(如:*/10)等价于0在“/”前面(如:0/10)。记住一条本质:表达式的每个数值域都是一个有最大值和最小值的集合,如:秒域和分钟域的集合是0-59,日期域是1-31,月份域是1-12。字符“/”可以帮助你在每个字符域中取相应的数值。如:“7/6”在月份域的时候只有当7月的时候才会触发,并不是表示每个6月。
L是‘last’的省略写法可以表示day-of-month和day-of-week域,但在两个字段中的意思不同,例如day-of-month域中表示一个月的最后一天。如果在day-of-week域表示‘7’或者‘SAT’,如果在day-of-week域中前面加上数字,它表示一个月的最后几天,例如‘6L’就表示一个月的最后一个星期五。
字符“W”只允许日期域出现。这个字符用于指定日期的最近工作日。例如:如果你在日期域中写 “15W”,表示:这个月15号最近的工作日。所以,如果15号是周六,则任务会在14号触发。如果15好是周日,则任务会在周一也就是16号触发。如果是在日期域填写“1W”即使1号是周六,那么任务也只会在下周一,也就是3号触发,“W”字符指定的最近工作日是不能够跨月份的。字符“W”只能配合一个单独的数值使用,不能够是一个数字段,如:1-15W是错误的。
“L”和“W”可以在日期域中联合使用,LW表示这个月最后一周的工作日。
字符“#”只允许在星期域中出现。这个字符用于指定本月的某某天。例如:“6#3”表示本月第三周的星期五(6表示星期五,3表示第三周)。“2#1”表示本月第一周的星期一。“4#5”表示第五周的星期三。
字符“C”允许在日期域和星期域出现。这个字符依靠一个指定的“日历”。也就是说这个表达式的值依赖于相关的“日历”的计算结果,如果没有“日历”关联,则等价于所有包含的“日历”。如:日期域是“5C”表示关联“日历”中第一天,或者这个月开始的第一天的后5天。星期域是“1C”表示关联“日历”中第一天,或者星期的第一天的后1天,也就是周日的后一天(周一)。
表达式举例:
  
"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触发
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点



分享到:
评论

相关推荐

    Quartz框架快速入门.pdf

    Quartz框架是一款强大的开源任务调度库,广泛应用于Java环境下的定时任务管理。要开始使用Quartz,首先需要在项目中引入必要的依赖。基础依赖是quartz-&lt;version&gt;.jar,这是Quartz的核心库。除此之外,根据你的需求,...

    Quartz定时任务框架学习总结

    Quartz是一款开源的作业调度框架,它为Java应用程序提供了强大的作业调度能力。作为一个专业的IT行业大师,理解并掌握Quartz的使用是至关重要的。本文将深入解析Quartz的核心概念、特性以及如何在实际项目中应用。 ...

    quartz 调度框架学习手册

    Quartz 是一个强大的开源任务调度框架,用于在Java应用程序中实现复杂的定时任务。它提供了丰富的API,使得开发者能够轻松地创建、管理和执行定时任务。以下是对 Quartz 的详细知识点的介绍: 1. **基本概念** - *...

    quartz任务调度框架简单实用小demo

    Quartz是一个开源的作业调度框架...通过这个简单的Quartz demo,你可以学习到如何在Java项目中集成Quartz,创建和调度任务。在实际开发中,你可以根据项目需求调整Job和Trigger的配置,实现更加复杂和灵活的任务调度。

    quartz 项目学习源码

    Quartz 是一个开源的作业调度框架,用于在 Java 应用程序中安排任务。它提供了丰富的 API 和功能,使得开发者可以灵活地定义、调度和管理各种类型的任务。在这个"quartz 项目学习源码"中,你可以深入理解 Quartz 的...

    Quartz学习资料

    Quartz是一款开源的作业调度框架,它允许开发者在Java应用程序中定义和执行复杂的任务调度。Quartz的核心功能是创建、安排和执行Job(任务),这些Job可以是任何实现了`org.quartz.Job`接口的Java对象。Quartz通过...

    基于SSM+quartz的定时任务管理demo

    本Demo以"基于SSM+quartz的定时任务管理"为主题,将展示如何在Spring、SpringMVC和MyBatis(SSM)框架基础上,集成Quartz作为调度引擎,实现高效灵活的定时任务管理。 **1. SSM框架简介** SSM是Spring、SpringMVC...

    SSH框架+Quartz集群

    在压缩包文件"oa_ssh"中,可能包含了项目的所有源代码、配置文件、数据库脚本等资源,开发者可以通过这些文件了解和学习SSH框架与Quartz集群的整合实现,以及RABC权限管理的具体细节。通过研究和实践,可以深入理解...

    基于Quartz.Net 的任务调度计划框架

    Quartz.Net是一个强大的开源任务调度框架,用于在.NET环境中创建和执行定时任务。它提供了灵活的调度机制,允许开发者在应用程序中定义复杂的作业执行规则,从而实现自动化的工作流程。Quartz.NET不仅支持简单的定时...

    学习笔记_Quartz作业调度框架,使用corn表达式

    了解和掌握Quartz框架以及Corn表达式,对于进行定时任务的管理和调度至关重要。它可以帮助你在项目中实现自动化任务,如定期备份、数据清理、定时发送邮件等,从而提高效率,减轻维护负担。 在提供的压缩包文件`...

    quartz-all-1.6.0.jar包定时任务jar

    3. **Scheduler**: Scheduler是整个Quartz框架的中心,它负责管理所有的Job和Trigger,以及它们之间的关联。通过调用Scheduler的start()方法启动调度服务,然后使用`scheduleJob(JobDetail, Trigger)`方法将Job和...

    quartz-2.2.3-官方文档数据及PDM表结构.zip

    Quartz是一个开源的作业调度框架,它允许Java开发者在应用程序中安排复杂的任务执行。Quartz 2.2.3 版本是这个框架的一个稳定版本,提供了许多改进和功能,以帮助开发人员更好地管理和调度任务。 文档部分包含了...

    动态QuartzDemo,整合SSM框架

    动态QuartzDemo是一个基于SSM(Spring、SpringMVC、MyBatis)框架的应用示例,它展示了如何在Java环境中集成并使用Quartz Scheduler来实现动态任务调度。Quartz是开源的作业调度框架,用于创建和执行计划任务,而SSM...

    spring quartz学习总结: cluster的配置和示例

    Spring Quartz是一款广泛使用的Java任务调度框架,用于在应用程序中安排周期性或一次性任务。Quartz集群(Cluster)是指多个Quartz实例(节点)共享相同的作业和触发器,从而实现高可用性和故障转移。本文将深入探讨...

    任务调度开源框架Quartz

    通过阅读《任务调度框架Quartz.doc》文档,你将能够深入理解Quartz的内部机制,学习如何创建和配置作业与触发器,以及如何在实际项目中集成和使用Quartz。文档可能还会涵盖Quartz的源码分析,这对于想要定制或优化...

    Quartz深入浅出

    通过阅读《Quartz学习.doc》和《Quartz学习.ppt》,你可以更深入地了解Quartz的原理、配置、使用示例和最佳实践,进一步提升你在Web开发中的任务调度能力。文档中可能还会涵盖如何处理Job执行异常、如何设置Job依赖...

    spring整合Quartz框架过程详解

    本文主要介绍了 Spring 整合 Quartz 框架的过程详解,通过示例代码对大家的学习或者工作具有参考学习价值。 一、Quartz 框架简介 Quartz 是一个完全由 Java 编写的开源任务调度框架,通过触发器设置作业定时运行...

    Quartz中文教程学习

    Quartz是一个开源的作业调度框架,它允许Java开发者在应用程序中定义复杂的任务调度。Quartz中文教程学习资源对于初学者来说是非常有价值的,因为它可以帮助你快速理解这个强大的工具,并将其有效地应用到实际项目中...

    quartz动态添加、修改和删除定时任务

    Quartz是一款开源的作业调度框架,它允许开发者创建、安排和管理定时任务。在Java应用程序中,Quartz常被用来实现后台任务的自动化执行,比如数据同步、日志清理、发送邮件等。本教程将详细介绍如何动态地在Quartz中...

    Quartz的学习

    Quartz是一个广泛应用于Java环境中的开源任务调度框架,它的主要功能是允许开发人员安排和执行周期性的任务。这个框架使得开发者能够轻松地在应用程序中...对于Java开发者而言,掌握Quartz框架的知识是非常有价值的。

Global site tag (gtag.js) - Google Analytics