项目需要用到定时器,虽然原来也使用过,但今天我重新搭建了一遍,顺便复习一下
第一步:
应为考虑到是spring 加载,首先想到的是对web.xml的修改,因为想将定时器的配置作为一个独立的模块,bean-quartz.xml
故修改配置如下:
<!-- 配置Spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:bean*.xml</param-value>
</context-param>
换成bean*.xml即可支持.
第二部:构建
bean-quartz.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- 注册定时执行实体 -->
<!--定义自己的任务类--!>
<bean id="doTask" class="com.joker.synz.quartz.SynzCert"></bean>
<!-- ============================= 执行任务 ========================== -->
<!-- 注册定时任务 -->
<bean id="doTaskJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 定时任务类 -->
<property name="targetObject" ref="doTask" />
<!-- 定时任务执行方法 -->
<property name="targetMethod">
<!--指定自己的任务类需要执行的方法--!>
<value>execute</value>
</property>
<!-- 同一任务在前一次执行未完成而Trigger时间又到时是否并发开始新的执行, 默认为true. -->
<property name="concurrent" value="false" />
</bean>
<!-- 定义定时器 -->
<bean id="mainTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="doTaskJob" />
<!--cron表达式,指定任务执行的时间--!>
<property name="cronExpression"
value="${schedule.dotask.cronExpression}" />
</bean>
<!-- 注册定时器 -->
<!--注册,使它能够被加载并且运行起来--!>
<bean id="schedulerFactoryBean" lazy-init="true" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="mainTrigger" />
</list>
</property>
</bean>
</beans>
其实很简单,定义,注册之后就可以使用了。
对于自己定义的类,无需实现任何接口或者继承任何类,自己写个类就可以。
package com.joker.synz.quartz;
import org.ezca.synz.quartz.thread.CertSYNZThtread;
/**
*
*
* @author GQ
*
*
*/
public class SynzCert {
public void execute(){
new Thread(new CertSYNZThtread()).start();
}
}
同时,需要jar包:
spring-context-support-3.0.5.RELEASE.jar
slf4j-api.jar和slf4j-log4j12.jar
log4j-1.2.14.jar。
关于cron表达式,请参考我转载的一篇文章。
http://blog.youkuaiyun.com/joker_apple/article/details/20136193