原文地址:
http://outofmemory.cn/code-snippet/4519/Spring-quartz-example
刚刚已经验证是可以用的,接下来想使用spring注解的方式!
本文的示例代码简单的演示如何使用Spring 3.0 + Quartz实现简单的任务调度。
首先需要新建一个maven项目,然后在pom中添加如下依赖项:
<!-- Spring 3 dependencies --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.1.2.RELEASE</version> </dependency> <!-- QuartzJobBean in spring-context-support.jar --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>3.1.2.RELEASE</version> </dependency> <!-- Spring + Quartz 事务支持 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>3.1.2.RELEASE</version> </dependency> <!-- Quartz 框架 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>1.8.6</version> </dependency>然后新建一个调度任务要做事情的类,我们命名为“ExampleQuartzTask”,这个类每次都打印一下当前的时间
package cn.outofmemory.hello.quartz;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ExampleQuartzTask {
public void doTask() {
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
Date now = new Date();
String strNow = format.format(now);
String msg = String.format("do Quartz Task at %s", strNow);
System.out.println(msg);
}
}
使用spring和Quartz框架我们只需要实现这个类就可以实现任务的定时调度执行了,剩下的工作就是配置一下spring的配置文件
<?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-3.0.xsd"> <!-- 我们实现的调度任务执行操作类 --> <bean id="exampleQuartzTask" class="cn.outofmemory.hello.quartz.ExampleQuartzTask"/> <!-- 封装要执行操作的类 --> <bean id="exampleQuartzTaskFactoryBean" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="exampleQuartzTask" /> <property name="targetMethod" value="doTask" /> </bean> <!-- 简单触发器,每隔5秒执行一次任务 --> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="exampleQuartzTaskFactoryBean" /> <property name="repeatInterval" value="5000" /> <property name="startDelay" value="1000" /> </bean> <!-- crontab trigger --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="exampleQuartzTaskFactoryBean" /> <!-- 每5秒执行一次 --> <property name="cronExpression" value="0/5 * * * * ?" /> </bean> <!-- 配置任务和触发器 --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="jobDetails"> <list> <ref bean="exampleQuartzTaskFactoryBean" /> </list> </property> <property name="triggers"> <list> <ref bean="simpleTrigger" /> </list> </property> </bean> </beans>
通过上面的配置,我们就可以实现调度任务了,打开App.java类,添加如下代码:
package cn.outofmemory.hello.quartz;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
new ClassPathXmlApplicationContext("/springContext.xml");
}
}