一、什么是 Quart 框架
quart 是一个开源的作业调度框架,它完全由java写成,它提供了巨大的灵活性而不牺牲简单性。你能用它来为执行一个作业而创建简单的或复杂的调度。
二、maven项目导入依赖
<dependency>
<groupId>org.quartz-scheduler
</groupId>
<artifactId>quartz
</artifactId>
<version>2.2.1
</version>
</dependency>
三、Quartz核心点
1.Job
表示一个任务(工作),要执行的具体内容。
2.JobDetail
任务描述,表示一个具体的可执行的任务调度程序,Job是这个可执行调度程序具体执行的内容.
3.Trigger
代表一个调度参数的配置,指定任务调度的频率时间,合适进行任务调度。
4.Scheduler
代表一个调度容器,一个调度容器可注册多个JobDetail和Trigger,当JobDetail与Trigger组合,就可以被Scheduler容器调度了。
四、测试代码的编写
具体要执行的内容,实现job。
package com
.djc
.erp
.job
;
import java
.util
.Date
;
import com
.djc
.utils
.UtilFuns
;
public class TestJob {
public void showTime() throws Exception
{
System
.out
.println("定时任务: "+UtilFuns
.dateTimeFormat(new Date(), "HH:mm:ss"));
}
}
五、编写Spring与Quartz整合的配置文件
1.创建配置文件application-job.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"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
">
<bean id="testJob" class="com.djc.erp.job.TestJob">
</bean>
<bean id="testJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="testJob"></property>
<property name="targetMethod" value="showTime"></property>
</bean>
<bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="testJobDetail"></property>
<property name="cronExpression" value="0/1 * * * * ? *"></property>
</bean>
<bean id="startQuartz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" >
<property name="triggers">
<list>
<ref bean="testTrigger"/>
</list>
</property>
</bean>
</beans>
2.测试结果
每隔一秒显示一次当前时间
六、Cron表达式
<property name="cronExpression" value="0/1 * * * * ? *"></property>
Quartz Cron表达式支持七个域: 秒 分 时 日 月 周 年
名称是否必须允许值特殊字符
秒是0-59,- * /分是0-59,- * /时是0-23,- * /日是1-31,- * ? / L W C月是1-12 或 JAN-DEC,- * /周是1-7 或 SUN-SAT,- * / L C #年否空 或 1970-2099,- * /
理解特殊字符: * 星号 指示着你想在这个域上包含所有合法的值。例如,在月份域上使用星号意味着每个月都会触发这个 trigger。eg:0/1 * * * * ? * ? 问号 只能用在日和周域上,但是不能在这两个域上同时使用。你可以认为 ? 字符是 “我并不关心在该域上是什么值。” 这不同于星号,星号是指示着该域上的每一个值。? 是说不为该域指定值。 , 逗号 被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。 / 斜杠 用于指定增量。如:“0/15”在秒域意思是每分钟的0,15,30和45秒。“5/15”在分钟域表示每小时的5,20,35和50。 - 中划线 被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点” # 井号 只允许在星期域中出现。这个字符用于指定本月的某某天。例如:“6#3”表示本月第三周的星期五(6表示星期五,3表示第三周)。 L 字母 某域上允许的最后一个值。它仅被日和周域支持。当用在日域上,表示的是在月域上指定的月份的最后一天。 W 字母 只允许日期域出现。这个字符用于指定日期的最近工作日。例如:如果你在日期域中写 “15W”,表示:这个月15号最近的工作日。所以,如果15号是周六,则任务会在14号触发。