1. 引入maven需要的包
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
2. 创建配置文件
quartz.properties
org.quartz.scheduler.instanceName = MyScheduler
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
3. 创建Job
import static org.junit.Assert.assertEquals;
import java.util.List;
import java.util.ResourceBundle;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
/**
* Class Description
*
* @author Luxiaoshuai
* @version
* @date 2015年8月25日 下午1:59:39
* @since
*/
public class UnfrozenJob {
private static final Logger logger = LoggerFactory.getLogger(UnfrozenJob.class);
/**
* 定时任务
*
* @param arg0
* @throws JobExecutionException
*/
public void execute() throws JobExecutionException {
logger.info("-----任务执行开始------");
logger.info("-----任务执行结束------");
}
}
4. 配置Spring
<!-- 让spring管理quartz -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="simpleTrigger"/>
</list>
</property>
</bean>
<!-- 简单的触发器 -->
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail"/>
<!-- 启动延迟10秒 -->
<property name="startDelay" value="0"/>
<!-- 每50秒执行一次任务 -->
<property name="repeatInterval" value="10000"/>
</bean>
<!-- Job任务设定 -->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="unfrozenJob"/>
<property name="targetMethod" value="execute"/>
<!-- 对于相同的JobDetail,当指定多个Trigger时, 很可能第一个job完成之前,第二个job就开始了。指定concurrent设为false,多个job不会并发运行,第二个job将会被推迟。 -->
<property name="concurrent" value="false"/>
</bean>
<!-- 注册Job -->
<bean id="unfrozenJob" class="com.xxx.xxx.acc.jobs.UnfrozenJob"/>
5. 参考文档
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/ (33.6 Using the Quartz Scheduler)
http://www.quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/
复杂点的触发器可以参照:
http://www.quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/crontrigger