简介
Quartz是一个Java的定时任务框架,使用它可以方便地实现计划任务,即在某个时间或是每隔一定时间运行一个任务。Quartz的核心是Job/JobDetail,Trigger和Scheduler。Job/JobDetail即要执行的任务,可以通过实现Job中的execute方法来指定任务的具体操作。Trigger描述出发Job执行的时间触发规则,用于控制一组Job的触发,包括SimpleTrigger和CronTrigger,后者支持一种描述触发时间和间隔的表达式语言。Scheduler代表一个Quartz 的独立运行容器,Trigger 和JobDetail可以注册到Schduler中,Schduler可以控制和管理触发器的启动和终止。
Spring的scheduling.quartz包中对Quartz框架进行了封装,使得开发时不用写任何Quartz和Spring的代码就可以实现定时任务。Spring通过JobDetailBean,MethodInvokingJobDetailFactoryBean实现Job的定义。后者更加实用,只需指定要运行的类,和该类中要运行的方法即可,Spring将自动生成符合Quartz要求的JobDetail。
实现
Step1:Job/JobDetail
方法一:(MethodInvokingJobDetailFactoryBean)
<bean id="scheduledUploadJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="storageService" />
<property name="targetMethod" value="batchUpload" />
</bean>
方法二:(JobDetailBean)
<bean id="libraryReminderJob"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>org.santino.www.jobs.LibraryReminderJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="libraryService">
<ref bean="libraryService" />
</entry>
<entry key="defaultCcAddress">
<value></value>
</entry>
</map>
</property>
</bean>
其中LibraryReminderJob必须具体化QuartzJobBean的抽象方法executeInternal,这个方法的实现内容也就是Job所要执行的操作。
Step2:Trigger
Quartz的两种Trigger也被封装成Spring的SimpleTruggerBean和CronTriggerBean。当仅仅需要触发一次或者以固定时间间隔周期执行,SimpleTrigger是最合适的选择;而CronTrigger则可以通过Cron表达式定义出各种复杂时间规则的调度方案;如每天早晨9:00执行,周一、周三、周五下午5:00执行等。
方法一:(SimpleTruggerBean)
<bean id="uploadJobTrigger"
class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="scheduledUploadJob" />
<property name="startDelay" value="10000" />
<!-- Run every 5 minute -->
<property name="repeatInterval" value="300000" />
</bean>
方法二:(CronTriggerBean)
<bean id="libraryReminderTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="libraryReminderJob" />
</property>
<property name="cronExpression">
<value>0 0 14 * * ?</value>
</property>
</bean>
Step3:Scheduler:
<bean id="schedulerFactory"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="uploadJobTrigger" />
<ref bean="libraryReminderTrigger" />
</list>
</property>
<property name="autoStartup" value="false"/>
</bean>
附:cronExpresession格式:
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /
表达式 意义
"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触发
分享到:
相关推荐
里面包含了两个工程项目: 1.Java project工程(含jar包,JDK1.6)。 是spring+quartz的任务调度实例。 2.Java web工程(含jar包,JDK1.7)。 spring+mybatis+quartz任务调度实例
Quartz是一个开源的作业调度框架,常用于创建和执行定时任务。在"spring+springMVC+mybatis+quartz动态定时任务创建"项目中,Quartz扮演着关键角色。它可以动态地添加、修改或删除定时任务,这在需要根据业务需求...
Quartz允许创建、调度和管理大量的作业和触发器,可以满足各种定时需求。 集成Spring和Quartz的步骤如下: 1. **引入依赖**:首先,在项目的pom.xml文件中添加Quartz和Spring相关依赖。 2. **配置Quartz**:在...
【标题】"Spring+Quartz+Maven项目实例"是一个基于Spring框架集成Quartz作业调度库的实战项目,采用Maven作为构建工具。这个实例旨在展示如何在Java应用程序中实现定时任务,支持两种运行模式,既可以直接以独立的...
Quartz 是一个开源的作业调度框架,能够实现定时任务的管理和执行。 在 "spring+quartz定时小例子" 中,我们主要关注的是如何将这两个框架结合使用,创建一个可以执行定时任务的应用。这个例子包含了相关的框架包和...
而Quartz则是一个强大的、开放源码的作业调度库,它可以用来创建、调度和执行计划任务。Quartz可以集成到Spring中,利用Spring的依赖注入和配置能力,使得任务调度更加简洁和易于维护。 **一、Spring与Quartz的集成...
而 Quartz 是一个开源的作业调度框架,可以方便地在应用程序中安排任务执行。 Quartz 的核心功能是创建、调度和执行 Job(任务)。它支持 Cron 表达式和基于日期时间的触发器,能够灵活地设定任务的执行时间。...
这包括`SchedulerFactoryBean`,用于初始化和管理Quartz调度器,以及`JobDetail`和`Trigger`,它们分别定义了任务和触发执行任务的规则。 3. **定义Job**:编写实现`org.quartz.Job`接口的类,这是实际执行的任务...
### 三、Quartz调度策略 Quartz提供了多种调度策略,包括: - **简单触发器(SimpleTrigger)**:按固定间隔重复执行任务。 - **Cron触发器(CronTrigger)**:基于Cron表达式来定义触发时间,支持复杂的定时规则...
2. **Spring配置文件**:在Spring的XML配置文件中,我们需要声明一个`SchedulerFactoryBean`,它是Spring对Quartz调度器的封装。通过这个bean,我们可以配置Quartz的相关属性,如JobStore类型(内存或数据库存储),...
Spring 和 Quartz 是两个在 Java 开发中非常重要的框架。Spring 是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等众多功能,极大地简化了Java应用的构建。而Quartz则是一...
本项目"spring+quartz任务调度代码版"显然是一个结合了这两者的实践案例,旨在展示如何在Spring环境下集成和使用Quartz进行任务调度。 Spring框架是一个开源的应用框架,它提供了丰富的功能,包括依赖注入、AOP...
Spring框架以其强大的功能和灵活的扩展性,成为Java开发的首选,而Quartz作为一款开源的作业调度库,能够很好地与Spring集成,提供定时任务的解决方案。本教程将详细讲解如何利用Spring 4.3.15、Spring MVC 4.3.15和...
`SchedulerFactoryBean`是Spring提供的用于创建Quartz调度器的bean,`triggers`属性的列表包含了需要调度的任务触发器。在这里,`startQuertz`会在容器启动时立即执行调度程序。 关于cron表达式的值,我们可以看到...
spring3.2.4+quartz2.2.0 定时调度例子,能正常运行的程序
标题 "spring+mybatis+quartz" 暗示了我们正在探讨一个使用Spring框架、MyBatis持久层框架和Quartz作业调度器的集成应用。这个组合在企业级Java应用中非常常见,用于实现复杂的数据操作、服务管理和定时任务。 ...
Quartz是一个开源的作业调度框架,能够安排和执行复杂的定时任务。 在集群环境下,Spring+Quartz的配置需要考虑如何处理多个服务器节点可能同时执行同一任务的问题。为了解决这个问题,Quartz提供了一种集群模式。...
开发者可以通过 Spring 的 XML 配置或者注解方式来定义 Quartz 作业和触发器,使得任务调度更加灵活和易于管理。 在实际开发中,Spring 与 Quartz 的整合步骤通常包括以下几个部分: 1. 添加依赖:在项目中引入 ...
- Quartz是开源作业调度框架,用于创建和执行作业以完成后台任务。 - 任务调度:创建JobDetail和Trigger,设置执行时间,交由Scheduler管理。 - 作业与触发器:Job代表具体任务,Trigger定义何时触发Job执行。 6...
2. 配置Quartz:在Spring的配置文件中,我们需要定义一个`SchedulerFactoryBean`,这是Quartz调度器的Spring Bean,可以设置相关属性,如线程池大小、是否自动启动等。 ```xml <bean id="scheduler" class="org....