1定时器的作用
在实际的开发中,如果项目中需要定时执行或者需要重复执行一定的工作,定时器显现的尤为重要。
例如,公司的考勤系统—刷卡
财务的审查,入账,报表都会需要定时器,当然如果我们不了解定时器就会用线程去实现,这样会带来一些麻烦,而spring有任务调度管理功能,能很好地解决以上的问题,特别实用!
2.准备工作。
配置文件中加入
<dependency>
<groupId>quartz</groupId>
<artifactId>quartz</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
3。接下来是你的任务类了。
package com.springquartz.bean;
import java.util.Date;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class PrintInfoJob extends QuartzJobBean{
private int timeout;
private static int i = 0;
//调度工厂实例化后,经过timeout时间开始执行调度
public void setTimeout(int timeout) {
this.timeout = timeout;
}
/**
* 要调度的具体任务
*/
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
// TODO Auto-generated method stub
//this.prinfInfoService.print();
System.out.println(new Date());
}
}
4。然后只需要配置配置文件了
<!-- 配置一个Job
说明:org.springframework.scheduling.quartz.JobDetailBean有两个属性,
jobClass属性即我们在java代码中定义的任务类,jobDataAsMap属性即该任务类中需要注入的属性值。
-->
<bean id="printInfoJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.springquartz.bean.PrintInfoJob"/>
<property name="jobDataAsMap">
<map>
<entry key="timeout" value="0" />
</map>
</property>
</bean>
<!-- 简单的触发器
Quartz的作业触发器有两种,分别是
org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean
第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。
SimpleTriggerBean方式如下:
-->
<bean id="simplePrintInfoTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="printInfoJob"/>
</property>
<property name="startDelay">
<value>0</value>
</property>
<property name="repeatInterval">
<value>2000</value>
</property>
</bean>
<!--
第二种CronTriggerBean,支持到指定时间运行一次,如每天12:00运行一次等。
如下
每天12:00运行一次
-->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="printInfoJob" />
<property name="cronExpression" value="0 0 12 * * ?" />
</bean>
<!-- spring触发工厂
说明:该参数指定的就是之前配置的触发器的名字。
这里选用的是SimpleTriggerBean触发器,便于马上看到效果
-->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="simplePrintInfoTrigger"/>
</list>
</property>
</bean>
接下来<property name="cronExpression" value="0 0 12 * * ?" />
说明一下其中value的值的含义
位置
-
含义
-
1
-
秒(0–59)
-
2
-
分(0–59)
-
3
-
时(0–23)
-
4
-
日(1–31)
-
5
-
月(1–12)
-
6
-
星期(SUN–SAT or 1–7)
-
7
-
年(可选, 1970–2099)
××××××比如“0 0 1 1 * ?”就表示每月1日凌晨1点运行××××
字段
允许值
允许的特殊字符
秒
0-59
, - * /
分
0-59
, - * /
小时
0-23
, - * /
日期
1-31
, - * ? / L W C
月份
1-12 或者 JAN-DEC
, - * /
星期
1-7 或者 SUN-SAT
, - * ? / L C #
年(可选)
留空, 1970-2099
, - * /
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/ac_great/article/details/47374219