第一步:导入相关jar包
(注:单单是在后台执行需要的jar包,若是经过tomcat执行,需额外添加一个jar包——jta-1.1.jar)
不同版本需要依赖的jar:
quartz-all-1.6.0.jar版本需要的jar包:
commons-collections-3.2.jar
commons-logging-1.1.1.jar
log4j-1.2.16.jar
spring.jar(spring的所有jar包)
quartz-1.8.6.jar版本需要的jar包:
commons-collections-3.2.jar
commons-logging-1.1.1.jar
log4j-1.2.16.jar
quartz-1.8.6.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar
spring.jar(spring的所有jar包)
第二步: 新建立一个业务bean-->com.cmge.ad.cpInterfaceModule.dbservice.QuartzService
package com.cmge.ad.cpInterfaceModule.dbservice;
public class QuartzService {
public void execute(){
System.out.println("我是定时任务执行!!!");
}
}
<!-- 第一步: 配置好要定时调用的业务类 -->
<bean id="quartzService" class="com.cmge.ad.cpInterfaceModule.dbservice.QuartzService" />
<!-- 第二步: 定义好具体要使用类的哪一个业务方法 -->
<bean id="printTimerJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 目标bean -->
<property name="targetObject" ref="quartzService" />
<!-- 要执行目标bean的哪一个业务方法 -->
<property name="targetMethod" value="execute" />
<!-- 是否并发 -->
<property name="concurrent" value="false"/>
</bean>
<!-- 第三步: 定义好调用模式: 如每隔2秒钟调用一次或每天的哪个时间调用一次等 -->
<bean id="printTimerTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="printTimerJob" />
<property name="cronExpression" value="0/3 * * * * ?" />
</bean>
<!-- 启动定时器 -->
<!--第四步 把定义好的任务放到调度(Scheduler)工厂里面,注意这里的ref bean -->
<bean id="schedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="applicationContextSchedulerContextKey" value="applicationContext"/>
<property name="triggers">
<list>
<ref bean="printTimerTrigger" />
</list>
</property>
</bean>
spring的定时器配置完成!
相关介绍:
在xml里配置值得关注的是<property name="cronExpression" value="0/1 * * * * ? "/>表示每隔一秒钟执行一次,例子如下:
0 0 10,14,16 * * 每天上午10点,下午2点和下午4点
0 0,15,30,45 * 1-10 * 每月前10天每隔15分钟
30 0 0 1 1 2012 在2012年1月1日午夜过30秒时
0 0 8-5 * MON-FRI 每个工作日的工作时间
- 区间
* 通配符 你不想设置那个字段
cronExpression的介绍:
按顺序 <value> 秒 分 小时 日期 月份 星期 年<value>
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年 (可选)留空,1970-2099 , - * /
“*”字符被用来指定所有的值。如:”*“在分钟的字段域里表示“每分钟”。