第一步:添加2个jar包: quartz-all-1.6.0.jar和spring-support.jar
如何项目中的commons-collections-x.x.jar版本低于3则替换为commons-collections-3.1.jar以上
第二步:创建一个类继承QuartzJobBean,实现executeInternal方法:
package com.accp.util;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
import com.accp.biz.CstLostBiz;
public class LostReportJob extends QuartzJobBean {
private CstLostBiz cstLostBiz;
public void setCstLostBiz(CstLostBiz cstLostBiz) {
this.cstLostBiz = cstLostBiz;
}
@Override
protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("come on!");
cstLostBiz.addCstLost();
}
}
第三步:在spring的配置文件中配置
<bean name="cstLostBiz" class="com.accp.biz.impl.CstLostBizImpl"></bean>
1.
SimpleTriggerBean与scheduledTimerTasks类似。指定工作的执行频度,模仿scheduledTimerTasks配置:
<bean id="lostReportJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>com.accp.util.LostReportJob</value>
</property>
注入对象:
<property name="jobDataAsMap">
<map>
<entry key="cstLostBiz" value-ref="cstLostBiz"></entry>
</map>
</property>
</bean>
2.
CronTriggerBean指定工作的准确运行时间:
<bean id="lostReportJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="lostReportJob"></property>
<property name="cronExpression">
<value>0 0 2 ? * SAT</value>
</property>
</bean>
属性cronExpression告诉何时触发。最神秘就是cron表达式:
Linux系统的计划任务通常有cron来承担。一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。从左到右:
1.秒2.分3.小时4.月份中的日期(1-31)5.月份(1-12或JAN-DEC)6.星期中的日期(1-7或SUN-SAT)7.年份(1970-2099)
每个元素都显示的规定一个值(如6),一个区间(9-12),一个列表(9,11,13)或一个通配符(*)。因为4和6这两个元素是互斥的,因此应该通过设置一个问号(?)来表明不想设置的那个字段,“/”如果值组合就表示重复次数(10/6表示每10秒重复6次)。
3.
启动定时器:
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="lostReportJobTrigger"/>
</list>
</property>
</bean>